UNPKG

@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
"use strict"; 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