#!/usr/bin/env node const minimist = require('minimist'); const { resolve, join } = require('node:path'); const { readFileSync, existsSync } = require('node:fs'); const { argv, exit, env, cwd } = require('node:process'); function printHelp() { const pkgData = readFileSync(resolve(__dirname, '..', 'package.json')).toString(); const { name, version } = JSON.parse(pkgData); console.log(`${name} v${version}`); } const args = minimist(argv.slice(2), { boolean: ['verbose'] }); if (args._.length === 0) { printHelp(); exit(1); } const scriptName = args._.shift(); const scriptPath = env.DEVELOP ? resolve(join(__dirname, '../dist/scripts', scriptName)) : resolve(join(__dirname, '../scripts', scriptName)); if (!existsSync(`${scriptPath}.js`)) { console.error(`Error: command ${scriptName} not found.`); exit(1); } const workingDir = cwd(); try { Promise.resolve() .then(() => require(scriptPath).default(args, workingDir)) .then(exitCode => exit(exitCode || 0)) .catch(err => { console.error(err && err.stack); exit(99); }); } catch (err) { console.error(err.stack); exit(99); }