Repository navigation
Expand file tree
/
Copy pathcli.js
More file actions
75 lines (64 loc) · 2.37 KB
/
Copy pathcli.js
File metadata and controls
75 lines (64 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env node
import 'dotenv/config';
import process from 'node:process';
import { Command } from 'commander';
import { registerAskCommand } from './src/commands/ask.js';
import { registerAppCommand } from './src/commands/app.js';
import { registerConfigCommand } from './src/commands/config.js';
import { registerExplainCommand } from './src/commands/explain.js';
import { registerGoCommand } from './src/commands/go.js';
import { registerInitCommand } from './src/commands/init.js';
import { registerOpenCommand } from './src/commands/open.js';
import { registerStartCommand } from './src/commands/start.js';
import { registerSummarizeCommand } from './src/commands/summarize.js';
import { registerSystemCommands, runRootUpdateOption } from './src/commands/system.js';
import { registerTimeCommand } from './src/commands/time.js';
import { CONFIG_PATH, pathExists } from './src/commands/shared.js';
const program = new Command();
program
.name('perky')
.description('I am just a Workspace-launcher with AI-Assistant')
.version('0.0.5')
.showHelpAfterError()
.showSuggestionAfterError()
.addHelpText('after', `
Examples:
$ perky init
$ perky ask "How do I read a file async in Node.js?"
$ perky explain package.json
$ perky summarize app.log --tail 200
$ perky time
$ perky open myapp
$ perky chrome
$ perky start myapp
$ perky go github.com
$ perky restart
`);
registerAskCommand(program);
registerAppCommand(program);
registerExplainCommand(program);
registerSummarizeCommand(program);
registerTimeCommand(program);
registerOpenCommand(program);
registerStartCommand(program);
registerGoCommand(program);
registerSystemCommands(program);
registerConfigCommand(program);
registerInitCommand(program);
if (process.argv.length <= 2) {
if (!(await pathExists(CONFIG_PATH))) {
console.log('Welcome to perky-cli.');
console.log('It looks like this is your first time. Run: perky init\n');
}
program.outputHelp();
} else {
const rawArgs = process.argv.slice(2);
const firstArg = rawArgs[0];
const knownCommands = new Set(program.commands.map((command) => command.name()));
const shouldImplicitApp = firstArg && !firstArg.startsWith('-') && !knownCommands.has(firstArg);
const argv = shouldImplicitApp
? [process.argv[0], process.argv[1], 'app', ...rawArgs]
: process.argv;
await program.parseAsync(argv);
await runRootUpdateOption(program);
}