mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-01-30 16:13:59 +00:00
Remove need for hardcoded list of command ids
Change-type: patch Signed-off-by: Scott Lowe <scott@balena.io>
This commit is contained in:
parent
8460dac066
commit
c48564e85a
@ -70,7 +70,7 @@ export async function preparseArgs(argv: string[]): Promise<string[]> {
|
|||||||
let args = cmdSlice;
|
let args = cmdSlice;
|
||||||
|
|
||||||
// Convert space separated subcommands (e.g. `end add`), to colon-separated format (e.g. `env:add`)
|
// Convert space separated subcommands (e.g. `end add`), to colon-separated format (e.g. `env:add`)
|
||||||
if (isSubcommand(cmdSlice)) {
|
if (await isSubcommand(cmdSlice)) {
|
||||||
// convert space-separated commands to oclif's topic:command syntax
|
// convert space-separated commands to oclif's topic:command syntax
|
||||||
args = [cmdSlice[0] + ':' + cmdSlice[1], ...cmdSlice.slice(2)];
|
args = [cmdSlice[0] + ':' + cmdSlice[1], ...cmdSlice.slice(2)];
|
||||||
Logger.command = `${cmdSlice[0]} ${cmdSlice[1]}`;
|
Logger.command = `${cmdSlice[0]} ${cmdSlice[1]}`;
|
||||||
@ -136,75 +136,8 @@ export function checkDeletedCommand(argvSlice: string[]): void {
|
|||||||
|
|
||||||
// Check if this is a space separated 'topic command' style command subcommand (e.g. `end add`)
|
// Check if this is a space separated 'topic command' style command subcommand (e.g. `end add`)
|
||||||
// by comparing with oclif style colon-separated subcommand list (e.g. `env:add`)
|
// by comparing with oclif style colon-separated subcommand list (e.g. `env:add`)
|
||||||
// TODO: Need to find a way of doing this that does not require maintaining list of IDs
|
export async function isSubcommand(args: string[]) {
|
||||||
export function isSubcommand(args: string[]) {
|
const { getCommandIdsFromManifest } = await import('./utils/oclif-utils');
|
||||||
return oclifCommandIds.includes(`${args[0] || ''}:${args[1] || ''}`);
|
const commandIds = await getCommandIdsFromManifest();
|
||||||
|
return commandIds.includes(`${args[0] || ''}:${args[1] || ''}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const oclifCommandIds = [
|
|
||||||
'api-key:generate',
|
|
||||||
'app',
|
|
||||||
'app:create',
|
|
||||||
'app:rename',
|
|
||||||
'app:restart',
|
|
||||||
'app:rm',
|
|
||||||
'apps',
|
|
||||||
'build',
|
|
||||||
'config:generate',
|
|
||||||
'config:inject',
|
|
||||||
'config:read',
|
|
||||||
'config:reconfigure',
|
|
||||||
'config:write',
|
|
||||||
'deploy',
|
|
||||||
'device',
|
|
||||||
'device:identify',
|
|
||||||
'device:init',
|
|
||||||
'device:move',
|
|
||||||
'device:os-update',
|
|
||||||
'device:public-url',
|
|
||||||
'device:reboot',
|
|
||||||
'device:register',
|
|
||||||
'device:rename',
|
|
||||||
'device:restart',
|
|
||||||
'device:rm',
|
|
||||||
'device:shutdown',
|
|
||||||
'devices',
|
|
||||||
'devices:supported',
|
|
||||||
'envs',
|
|
||||||
'env:add',
|
|
||||||
'env:rename',
|
|
||||||
'env:rm',
|
|
||||||
'help',
|
|
||||||
'internal:scandevices',
|
|
||||||
'internal:osinit',
|
|
||||||
'join',
|
|
||||||
'keys',
|
|
||||||
'key',
|
|
||||||
'key:add',
|
|
||||||
'key:rm',
|
|
||||||
'leave',
|
|
||||||
'local:configure',
|
|
||||||
'local:flash',
|
|
||||||
'login',
|
|
||||||
'logout',
|
|
||||||
'logs',
|
|
||||||
'note',
|
|
||||||
'os:build-config',
|
|
||||||
'os:configure',
|
|
||||||
'os:versions',
|
|
||||||
'os:download',
|
|
||||||
'os:initialize',
|
|
||||||
'preload',
|
|
||||||
'push',
|
|
||||||
'scan',
|
|
||||||
'settings',
|
|
||||||
'ssh',
|
|
||||||
'support',
|
|
||||||
'tags',
|
|
||||||
'tag:rm',
|
|
||||||
'tag:set',
|
|
||||||
'tunnel',
|
|
||||||
'util:available-drives',
|
|
||||||
'version',
|
|
||||||
'whoami',
|
|
||||||
];
|
|
||||||
|
@ -69,3 +69,17 @@ export function capitanoizeOclifUsage(
|
|||||||
.replace(/(?<=\s)[A-Z]+(?=(\s|$))/g, (match) => `<${match}>`)
|
.replace(/(?<=\s)[A-Z]+(?=(\s|$))/g, (match) => `<${match}>`)
|
||||||
.toLowerCase();
|
.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getCommandsFromManifest() {
|
||||||
|
const manifest = require('../../oclif.manifest.json');
|
||||||
|
|
||||||
|
if (manifest.commands == null) {
|
||||||
|
throw new Error('Commands section not found in manifest.');
|
||||||
|
}
|
||||||
|
return manifest.commands;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getCommandIdsFromManifest() {
|
||||||
|
const commands = await getCommandsFromManifest();
|
||||||
|
return Object.keys(commands);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user