balena-cli
Version:
The official balena Command Line Interface
90 lines • 3.25 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.unsupportedFlag = void 0;
exports.preparseArgs = preparseArgs;
exports.checkDeletedCommand = checkDeletedCommand;
exports.isSubcommand = isSubcommand;
exports.unsupportedFlag = false;
async function preparseArgs(argv) {
if (process.env.DEBUG) {
console.log(`[debug] original argv0="${process.argv0}" argv=[${argv}] length=${argv.length}`);
}
const cmdSlice = argv.slice(2);
if (cmdSlice.length > 0) {
if (['--version', '-v'].includes(cmdSlice[0])) {
cmdSlice[0] = 'version';
}
else if ('--help' === cmdSlice[0]) {
cmdSlice[0] = 'help';
}
if (cmdSlice.length > 1 &&
cmdSlice[0] === 'help' &&
cmdSlice[1][0] !== '-') {
cmdSlice.shift();
cmdSlice.push('--help');
}
if (extractBooleanFlag(cmdSlice, '--debug')) {
process.env.DEBUG = '1';
}
exports.unsupportedFlag = extractBooleanFlag(cmdSlice, '--unsupported');
}
if (process.env.DEBUG) {
process.env.BLUEBIRD_LONG_STACK_TRACES = '1';
}
const Logger = await Promise.resolve().then(() => require('./utils/logger'));
Logger.command = cmdSlice[0];
let args = cmdSlice;
if (await isSubcommand(cmdSlice)) {
args = [cmdSlice[0] + ':' + cmdSlice[1], ...cmdSlice.slice(2)];
Logger.command = `${cmdSlice[0]} ${cmdSlice[1]}`;
}
if (process.env.DEBUG) {
console.log(`[debug] new argv=[${[argv[0], argv[1], ...args]}] length=${args.length + 2}`);
}
return args;
}
function extractBooleanFlag(argv, flag) {
const index = argv.indexOf(flag);
if (index >= 0) {
argv.splice(index, 1);
return true;
}
return false;
}
function checkDeletedCommand(argvSlice) {
const { ExpectedError } = require('./errors');
if (argvSlice[0] === 'help') {
argvSlice = argvSlice.slice(1);
}
function replaced(oldCmd, alternative, version) {
throw new ExpectedError(`\
Note: the command "balena ${oldCmd}" was replaced in CLI version ${version}.
Please use "balena ${alternative}" instead.`);
}
function removed(oldCmd, alternative, version) {
let msg = `Note: the command "balena ${oldCmd}" was removed in CLI version ${version}.`;
if (alternative) {
msg = [msg, alternative].join('\n');
}
throw new ExpectedError(msg);
}
const cmds = {};
let cmd;
if (argvSlice.length > 1) {
cmd = [argvSlice[0], argvSlice[1]].join(' ');
}
else if (argvSlice.length > 0) {
cmd = argvSlice[0];
}
if (cmd && Object.getOwnPropertyNames(cmds).includes(cmd)) {
const changeType = cmds[cmd][0];
const changeTypeFn = changeType === 'replaced' ? replaced : removed;
changeTypeFn(cmd, cmds[cmd][1], cmds[cmd][2]);
}
}
async function isSubcommand(args) {
const { getCommandIdsFromManifest } = await Promise.resolve().then(() => require('./utils/oclif-utils'));
const commandIds = await getCommandIdsFromManifest();
return commandIds.includes(`${args[0] || ''}:${args[1] || ''}`);
}
//# sourceMappingURL=preparser.js.map
;