@j0nnyboi/amman
Version:
A modern mandatory toolbelt to help test solana SDK libraries and apps on a locally running validator.
66 lines (65 loc) • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runHelp = exports.handleRunCommand = exports.LABEL_INDICATOR = void 0;
const ansi_colors_1 = require("ansi-colors");
const assert_1 = require("assert");
const child_process_1 = require("child_process");
const util_1 = require("util");
const utils_1 = require("../../utils");
const utils_2 = require("../utils");
const exec = (0, util_1.promisify)(child_process_1.exec);
exports.LABEL_INDICATOR = '+';
async function handleRunCommand(labels, args, transactionsOnly, accountsOnly) {
const amman = (0, utils_2.cliAmmanInstance)();
try {
const withLabelsExpanded = await Promise.all(args.map(async (arg) => {
if (typeof arg === 'string' && arg.startsWith(exports.LABEL_INDICATOR)) {
const label = arg.slice(1);
const resolvedAddresses = await (0, utils_2.resolveAccountAddresses)(amman, label);
(0, assert_1.strict)(resolvedAddresses.length !== 0, `Could not resolve label ${label}`);
if (resolvedAddresses.length > 1) {
const rendered = resolvedAddresses.map((x) => (0, ansi_colors_1.dim)(x)).join('\n ');
throw new Error(`Label ${arg} resolves to multiple addresses:\n ${rendered}` +
`\n\nTherefore amman cannot expand it, please provide the address you want to use directly.`);
}
return resolvedAddresses;
}
return arg;
}));
const cmd = withLabelsExpanded.join(' ');
console.log(`\n${(0, ansi_colors_1.dim)(cmd)}`);
const { stderr, stdout } = await exec(cmd);
if (labels.length > 0) {
try {
(0, utils_1.logDebug)(`Adding labels ${labels} from stdout`);
await amman.addr.addLabelsFromText(labels, stdout, {
transactionsOnly,
accountsOnly,
});
}
catch (err) {
(0, utils_1.logError)(`Failed to add labels from command output\n${err.message}`);
}
}
return { stderr, stdout };
}
catch (err) {
(0, utils_1.logError)(err.message);
return Promise.resolve({ stdout: '', stderr: '' });
}
finally {
amman.disconnect();
}
}
exports.handleRunCommand = handleRunCommand;
function runHelp() {
return `
Usage:
amman run -- <command with labels prefixed with +>
Examples:
amman run -- safe-token balance +token --owner +owner
amman run -- solana balance +token
`;
}
exports.runHelp = runHelp;
//# sourceMappingURL=run.js.map