UNPKG

@nfps.dev/cli

Version:

CLI for NFP development, inspection, and manipulation

99 lines 3.43 kB
#!/usr/bin/env node import { webcrypto } from 'node:crypto'; import { readFileSync } from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { ode } from '@blake.regalia/belt'; import { safe_json } from '@solar-republic/neutrino'; import { WebSocket } from 'ws'; import yargsImport from 'yargs'; import { hideBin } from 'yargs/helpers'; import { H_CMDS_CONFIG } from './cmds/config.js'; import { H_CMDS_DELEGATES } from './cmds/delegates.js'; import { H_CMDS_INIT } from './cmds/init.js'; import { H_CMDS_MINT } from './cmds/mint.js'; import { H_CMDS_MINTERS } from './cmds/minters.js'; import { H_CMDS_PACKAGE } from './cmds/package.js'; import { H_CMDS_SET_VK } from './cmds/set-vk.js'; import { H_CMDS_STORAGE } from './cmds/storage.js'; import { H_CMDS_WHOAMI } from './cmds/whoami.js'; import { H_CMDS_QUERY } from './cmds/query.js'; import { H_CMDS_EXEC } from './cmds/exec.js'; // polyfil crypto for older node versions if (!globalThis.crypto) globalThis.crypto = webcrypto; // polyfil WebSocket for node // @ts-expect-error WebSocket typing globalThis.WebSocket = WebSocket; // parse version from package.json // eslint-disable-next-line no-useless-concat const pd_dirname = ('_' + '_dirname') in globalThis ? `${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}` : `${'win32' === process.platform ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}`; const sx_version = safe_json(readFileSync(path.join(pd_dirname, '..', 'package.json'), 'utf-8')).version; // eslint-disable-next-line @typescript-eslint/naming-convention function commands(h_commands, y_yargs = yargs) { for (const [si_cmd, g_cmd] of ode(h_commands)) { // subcommands if (g_cmd.commands) { // eslint-disable-next-line @typescript-eslint/naming-convention y_yargs.command(si_cmd, g_cmd.info, (y_yargs_sub) => { commands(g_cmd.commands, y_yargs_sub); }); } else if (g_cmd.handler) { // @ts-expect-error improperly typed handler y_yargs.command(si_cmd, g_cmd.info, (y_yargs_sub) => { // apply options object y_yargs_sub.options(g_cmd.opts || {}); // apply each positional for (const [si_arg, g_arg] of ode(g_cmd.pos || {})) { y_yargs_sub.positional(si_arg, g_arg); } }, g_cmd.handler); } } } // normalize for esm const yargs = yargsImport(hideBin(process.argv)); [ // nfp init H_CMDS_INIT, // nfp mint 1 --public '{token_uri: "test-public"}' H_CMDS_MINT, // nfp config <key> [value] H_CMDS_CONFIG, // nfp set-vk <key> H_CMDS_SET_VK, // nfp package <cmd> H_CMDS_PACKAGE, // nfp storage <cmd> H_CMDS_STORAGE, // nfp minters <cmd> H_CMDS_MINTERS, // nfp whoami H_CMDS_WHOAMI, // nfp delegates <cmd> H_CMDS_DELEGATES, // nfp query <cmd> H_CMDS_QUERY, // nfp exec <cmd> H_CMDS_EXEC, ].forEach((h_cmds) => { commands(h_cmds); }); await yargs .scriptName('nfp') .demandCommand(1) .version(sx_version) // .alias('v', 'version') .help() .alias('h', 'help') .options({ quiet: { alias: 'q', type: 'boolean', }, }) .strict() .completion() .parse(); //# sourceMappingURL=main.js.map