69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
import './src/compat/compat';
|
|
|
|
export async function invokeCommand(
|
|
command: string,
|
|
root: string,
|
|
commandArgs: string[] = []
|
|
) {
|
|
if (command === undefined) {
|
|
command = 'help';
|
|
}
|
|
|
|
let verboseFlagIndex = commandArgs.indexOf('--verbose');
|
|
if (verboseFlagIndex < 0) {
|
|
verboseFlagIndex = commandArgs.indexOf('-v');
|
|
}
|
|
const isVerbose = verboseFlagIndex >= 0;
|
|
if (isVerbose) {
|
|
commandArgs.splice(verboseFlagIndex, 1);
|
|
}
|
|
|
|
switch (command) {
|
|
case 'new':
|
|
return (await import('./src/commands/generate')).taoNew(
|
|
root,
|
|
commandArgs,
|
|
isVerbose
|
|
);
|
|
case 'generate':
|
|
case 'g':
|
|
return (await import('./src/commands/generate')).generate(
|
|
root,
|
|
commandArgs,
|
|
isVerbose
|
|
);
|
|
case 'run':
|
|
case 'r':
|
|
return (await import('./src/commands/run')).run(
|
|
root,
|
|
commandArgs,
|
|
isVerbose
|
|
);
|
|
case 'migrate':
|
|
return (await import('./src/commands/migrate')).migrate(
|
|
root,
|
|
commandArgs,
|
|
isVerbose
|
|
);
|
|
case 'help':
|
|
case '--help':
|
|
return (await import('./src/commands/help')).help();
|
|
default:
|
|
const projectName = commandArgs[0] ? commandArgs[0] : '';
|
|
// this is to make `tao test mylib` same as `tao run mylib:test`
|
|
return (await import('./src/commands/run')).run(
|
|
root,
|
|
[`${projectName}:${command}`, ...commandArgs.slice(1)],
|
|
isVerbose
|
|
);
|
|
}
|
|
}
|
|
|
|
export async function invokeCli(root: string, args: string[]) {
|
|
const [command, ...commandArgs] = args;
|
|
process.exit(await invokeCommand(command, root, commandArgs));
|
|
}
|
|
|
|
invokeCli(process.cwd(), process.argv.slice(2));
|