dashb 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+
2
+ # dashb ⚡️
3
+
4
+ > Developer dashboard for your terminal.
5
+
6
+ **dashb** is a smart CLI tool that automatically detects your project stack and provides instant shortcuts for common tasks like running tests, starting servers, and building your app. It also tracks your usage stats and lets you create custom shortcuts.
7
+
8
+ ![dashb screenshot](https://github.com/ratnamshah/dashb/raw/main/media/screenshot.png)
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ npm install -g dashb
14
+ ```
15
+
16
+ ## Usage
17
+
18
+ Simply run `db` in any project directory:
19
+
20
+ ```bash
21
+ db
22
+ ```
23
+
24
+ It will detect if you're in a Node, Python, Rust, Go, or Docker project and show relevant commands.
25
+
26
+ ### Stack Specific
27
+ To force a specific stack's commands:
28
+
29
+ ```bash
30
+ db py # Python commands
31
+ db js # Node.js commands
32
+ db rs # Rust commands
33
+ db go # Go commands
34
+ db dk # Docker commands
35
+ ```
36
+
37
+ ### Features
38
+
39
+ - **Auto-Detection**: Works with Node.js, Python, Rust, Go, Ruby, Java, C/C++, and Docker.
40
+ - **Performance**: Extremely fast startup.
41
+ - **Custom Shortcuts**: Add your own project-specific commands.
42
+ ```bash
43
+ db add
44
+ ```
45
+ - **Stats Tracking**: Visualize your most used commands.
46
+ ```bash
47
+ db stats
48
+ ```
49
+ - **Doctor**: Check project health.
50
+ ```bash
51
+ db doc
52
+ ```
53
+
54
+ ## Development
55
+
56
+ ```bash
57
+ git clone https://github.com/ratnamshah/dashb.git
58
+ cd dashb
59
+ npm install
60
+ npm run build
61
+ npm link
62
+ ```
63
+
64
+ ## License
65
+
66
+ MIT © [Jpdz Labs](https://github.com/ratnamshah)
@@ -0,0 +1 @@
1
+ export declare function setupAutocomplete(): void;
@@ -0,0 +1,117 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { execSync } from 'node:child_process';
5
+ const TTY = process.stdout.isTTY !== false && !process.env['NO_COLOR'];
6
+ const GREEN = TTY ? '\x1b[38;2;110;210;130m' : '';
7
+ const ORANGE = TTY ? '\x1b[38;2;255;165;0m' : '';
8
+ const RED = TTY ? '\x1b[38;2;255;80;80m' : '';
9
+ const DIM = TTY ? '\x1b[90m' : '';
10
+ const RESET = TTY ? '\x1b[0m' : '';
11
+ function detectShell() {
12
+ const shellEnv = process.env.SHELL || '';
13
+ if (shellEnv.includes('zsh'))
14
+ return 'zsh';
15
+ if (shellEnv.includes('bash'))
16
+ return 'bash';
17
+ try {
18
+ const parentShell = execSync('ps -p $PPID -o comm=', { encoding: 'utf-8' }).trim();
19
+ if (parentShell.includes('zsh'))
20
+ return 'zsh';
21
+ if (parentShell.includes('bash'))
22
+ return 'bash';
23
+ }
24
+ catch { }
25
+ return 'unknown';
26
+ }
27
+ function getZshCompletion() {
28
+ const lines = [
29
+ '_dashb_completions() {',
30
+ ' local output',
31
+ ' output=$(dashb --completion 2>/dev/null)',
32
+ ' ',
33
+ ' if [[ -n "$output" ]]; then',
34
+ ' local -a completions',
35
+ ' completions=("${(@f)output}")',
36
+ ' _describe \'dashb commands\' completions',
37
+ ' fi',
38
+ '}',
39
+ '',
40
+ 'compdef _dashb_completions dashb db',
41
+ ];
42
+ return lines.join('\n');
43
+ }
44
+ function getBashCompletion() {
45
+ const lines = [
46
+ '_dashb_completions() {',
47
+ ' local cur="${COMP_WORDS[COMP_CWORD]}"',
48
+ ' local output',
49
+ ' ',
50
+ ' output=$(dashb --completion 2>/dev/null)',
51
+ ' ',
52
+ ' if [[ -n "$output" ]]; then',
53
+ ' local keys=$(echo "$output" | cut -d\':\' -f1)',
54
+ ' COMPREPLY=( $(compgen -W "$keys" -- "$cur") )',
55
+ ' fi',
56
+ '}',
57
+ '',
58
+ 'complete -F _dashb_completions dashb db',
59
+ ];
60
+ return lines.join('\n');
61
+ }
62
+ export function setupAutocomplete() {
63
+ console.log('\n ' + ORANGE + '\u25b6' + RESET + ' Setting up dashb autocomplete...');
64
+ const shell = detectShell();
65
+ if (shell === 'unknown') {
66
+ console.log('\n ' + RED + '\u2716' + RESET + ' Could not automatically detect shell (zsh or bash supported).');
67
+ console.log(' Please set up autocomplete manually.\n');
68
+ process.exit(1);
69
+ }
70
+ const dashbDir = join(homedir(), '.dashb');
71
+ if (!existsSync(dashbDir)) {
72
+ mkdirSync(dashbDir, { recursive: true });
73
+ }
74
+ const scriptName = 'completion.' + shell;
75
+ const scriptPath = join(dashbDir, scriptName);
76
+ const rcName = shell === 'zsh' ? '.zshrc' : '.bashrc';
77
+ const rcPath = join(homedir(), rcName);
78
+ // 1. Write the completion script
79
+ try {
80
+ const scriptContent = shell === 'zsh' ? getZshCompletion() : getBashCompletion();
81
+ writeFileSync(scriptPath, scriptContent + '\n', 'utf-8');
82
+ }
83
+ catch (err) {
84
+ console.error('\n ' + RED + '\u2716' + RESET + ' Failed to write completion script: ' + err.message + '\n');
85
+ process.exit(1);
86
+ }
87
+ // 2. Check if already sourced in rc file
88
+ const sourceLine = 'source "' + scriptPath + '"';
89
+ let alreadySourced = false;
90
+ try {
91
+ if (existsSync(rcPath)) {
92
+ const rcContent = readFileSync(rcPath, 'utf-8');
93
+ alreadySourced = rcContent.includes(scriptPath);
94
+ }
95
+ }
96
+ catch { }
97
+ // 3. Append to rc file if needed
98
+ if (!alreadySourced) {
99
+ try {
100
+ appendFileSync(rcPath, '\n# dashb autocomplete\n' + sourceLine + '\n', 'utf-8');
101
+ console.log(' ' + GREEN + '\u2714' + RESET + ' Appended source line to ~/' + rcName);
102
+ }
103
+ catch (err) {
104
+ console.log('\n ' + RED + '\u2716' + RESET + ' Could not append to ~/' + rcName + '.');
105
+ console.log(' ' + DIM + 'Please add this line manually:' + RESET);
106
+ console.log(' ' + sourceLine + '\n');
107
+ process.exit(1);
108
+ }
109
+ }
110
+ else {
111
+ console.log(' ' + GREEN + '\u2714' + RESET + ' Autocomplete already configured in ~/' + rcName);
112
+ }
113
+ console.log('\n ' + GREEN + '\u2714' + RESET + ' Autocomplete installed for ' + shell + '!');
114
+ console.log(' ' + ORANGE + 'Please restart your terminal or run:' + RESET);
115
+ console.log(' source ~/' + rcName + '\n');
116
+ }
117
+ //# sourceMappingURL=autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../source/autocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvE,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAEnC,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAEX,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,gBAAgB;QAChB,4CAA4C;QAC5C,IAAI;QACJ,+BAA+B;QAC/B,0BAA0B;QAC1B,mCAAmC;QACnC,8CAA8C;QAC9C,MAAM;QACN,GAAG;QACH,EAAE;QACF,qCAAqC;KACtC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,yCAAyC;QACzC,gBAAgB;QAChB,IAAI;QACJ,4CAA4C;QAC5C,IAAI;QACJ,+BAA+B;QAC/B,oDAAoD;QACpD,mDAAmD;QACnD,MAAM;QACN,GAAG;QACH,EAAE;QACF,yCAAyC;KAC1C,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,mCAAmC,CAAC,CAAC;IAEtF,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,GAAG,gEAAgE,CAAC,CAAC;QAChH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,GAAG,KAAK,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAEvC,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACjF,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,GAAG,sCAAsC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC;IACjD,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAEX,iCAAiC;IACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,cAAc,CAAC,MAAM,EAAE,0BAA0B,GAAG,UAAU,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,6BAA6B,GAAG,MAAM,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,GAAG,yBAAyB,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,gCAAgC,GAAG,KAAK,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,wCAAwC,GAAG,MAAM,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,8BAA8B,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,sCAAsC,GAAG,KAAK,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAC7C,CAAC"}
package/dist/cli.js CHANGED
@@ -11,12 +11,32 @@ import { getDownloads } from './downloads.js';
11
11
  import { runDoctor } from './doctor.js';
12
12
  import { loadCustom, interactiveAdd, removeShortcut } from './custom.js';
13
13
  import { showStats, trackCommand } from './stats.js';
14
+ import { setupAutocomplete } from './autocomplete.js';
15
+ import { checkEnv } from './env.js';
16
+ import { killPort } from './kill.js';
14
17
  const __dirname = dirname(fileURLToPath(import.meta.url));
15
18
  const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
16
19
  const args = process.argv.slice(2);
17
20
  const cwd = process.cwd();
18
21
  const stacks = detectStacks(cwd);
19
22
  const project = detectProject(cwd);
23
+ // --completion hidden flag for shell hook
24
+ if (args[0] === '--completion') {
25
+ const builtInCommands = [
26
+ { key: 'doc', label: 'Doctor' },
27
+ { key: 'stats', label: 'Stats' },
28
+ { key: 'add', label: 'Add Shortcut' },
29
+ { key: 'setup-autocomplete', label: 'Setup Autocomplete' },
30
+ ];
31
+ const commands = getCommands(project.type, cwd);
32
+ const customCommands = loadCustom(cwd, stacks);
33
+ const allCmds = [...builtInCommands, ...commands, ...customCommands];
34
+ for (const cmd of allCmds) {
35
+ // Format: key:Label (spaces in label are okay for zsh, bash ignores label)
36
+ console.log(`${cmd.key}:${cmd.label.replace(/:/g, '-')}`);
37
+ }
38
+ process.exit(0);
39
+ }
20
40
  // Detect which bin name was used (dashb or db)
21
41
  const rawBin = basename(process.argv[1] ?? '');
22
42
  const bin = rawBin.replace(/\.js$/, '');
@@ -40,25 +60,15 @@ if (args[0] === '--version' || args[0] === '-v') {
40
60
  async function main() {
41
61
  // Fetch downloads in background (non-blocking)
42
62
  const downloadsPromise = getDownloads();
43
- // db doc — project health check
44
- if (args[0] === 'doc') {
45
- trackCommand('doc');
46
- await runDoctor(cwd, stacks);
47
- process.exit(0);
48
- }
49
- // db stats show usage stats
50
- if (args[0] === 'stats') {
51
- trackCommand('stats');
52
- showStats();
53
- process.exit(0);
54
- }
55
- // db add — interactive custom shortcut creation
56
- if (args[0] === 'add') {
57
- trackCommand('add');
58
- await interactiveAdd(cwd);
59
- process.exit(0);
60
- }
61
- // db rm <key> — remove a custom shortcut
63
+ const builtInCommands = [
64
+ { key: 'doc', label: 'Doctor', command: 'doc', isBuiltIn: true },
65
+ { key: 'stats', label: 'Stats', command: 'stats', isBuiltIn: true },
66
+ { key: 'env', label: 'Check Env', command: 'env', isBuiltIn: true },
67
+ { key: 'kill', label: 'Kill Port', command: 'kill', isBuiltIn: true },
68
+ { key: 'add', label: 'Add Shortcut', command: 'add', isBuiltIn: true },
69
+ { key: 'setup-autocomplete', label: 'Setup Autocomplete', command: 'setup-autocomplete', isBuiltIn: true }
70
+ ];
71
+ // db rm <key> — remove a custom shortcut (special case, not stackable)
62
72
  if (args[0] === 'rm') {
63
73
  const key = args[1];
64
74
  if (!key) {
@@ -77,16 +87,32 @@ async function main() {
77
87
  // Stack-specific mode: db py, db js, db rs, etc.
78
88
  const selectedStack = stacks.find(s => s.id === stackFromAlias);
79
89
  if (!selectedStack) {
90
+ // It's not detected as an active project type here.
91
+ // BUT they might be trying to run a specific file using the runner
92
+ // e.g. "db py hello.py"
93
+ const stackArgs = args.slice(1);
94
+ if (stackArgs.length > 0) {
95
+ const { findFileRunner } = await import('./run.js');
96
+ const fileRunnerCmd = await findFileRunner(stackArgs[0], cwd, stackFromAlias);
97
+ if (fileRunnerCmd) {
98
+ // Manually execute it here since it bypassed normal parsing
99
+ const code = runShortcut(fileRunnerCmd, shortName, stackArgs.slice(1));
100
+ process.exit(code);
101
+ }
102
+ }
103
+ // If we reach here, it's not an active project AND they aren't executing a valid file
80
104
  const o = process.stdout.isTTY !== false && !process.env['NO_COLOR']
81
105
  ? '\x1b[38;2;255;80;80m' : '';
82
106
  const r = o ? '\x1b[0m' : '';
83
107
  console.error(`\n ${o}✖${r} Stack "${args[0]}" not detected in this directory`);
108
+ console.error(` Also could not match "${stackArgs[0] || ''}" to a runnable file.`);
84
109
  const detected = stacks.map(s => s.alias).join(', ');
85
110
  console.error(` Detected stacks: ${detected || 'none'}\n`);
86
111
  process.exit(1);
87
112
  }
88
113
  const stackArgs = args.slice(1);
89
114
  const commands = getCommands(selectedStack.id, cwd);
115
+ const customCommands = loadCustom(cwd, stacks);
90
116
  if (stackArgs.length === 0 || stackArgs[0] === '--help' || stackArgs[0] === '-h') {
91
117
  const downloads = await downloadsPromise;
92
118
  display({
@@ -97,25 +123,59 @@ async function main() {
97
123
  bin: shortName,
98
124
  selectedStack,
99
125
  downloads,
126
+ customCommands,
100
127
  });
101
128
  process.exit(0);
102
129
  }
103
- const key = stackArgs[0];
104
- const cmd = commands.find(c => c.key === key);
105
- if (!cmd) {
106
- const o = process.stdout.isTTY !== false && !process.env['NO_COLOR']
107
- ? '\x1b[38;2;255;80;80m' : '';
130
+ const execQueue = await parseCommands(stackArgs, builtInCommands, commands, customCommands, cwd, selectedStack.id);
131
+ if (execQueue.length === 0) {
132
+ // It couldn't find ANY valid command to start with
133
+ const key = stackArgs[0];
134
+ const o = process.stdout.isTTY !== false && !process.env['NO_COLOR'] ? '\x1b[38;2;255;80;80m' : '';
108
135
  const r = o ? '\x1b[0m' : '';
109
136
  console.error(`\n ${o}✖${r} Unknown shortcut: "${key}" for ${selectedStack.label}`);
110
137
  console.error(` Run '${shortName} ${args[0]}' to see available shortcuts\n`);
111
138
  process.exit(1);
112
139
  }
113
- runShortcut(cmd, `${shortName} ${args[0]}`);
114
- return;
140
+ for (const { cmd, cmdArgs } of execQueue) {
141
+ if (cmd.isBuiltIn) {
142
+ if (cmd.key === 'doc') {
143
+ trackCommand('doc');
144
+ await runDoctor(cwd, stacks);
145
+ }
146
+ else if (cmd.key === 'stats') {
147
+ trackCommand('stats');
148
+ showStats();
149
+ }
150
+ else if (cmd.key === 'add') {
151
+ trackCommand('add');
152
+ await interactiveAdd(cwd, stacks);
153
+ }
154
+ else if (cmd.key === 'env') {
155
+ trackCommand('env');
156
+ checkEnv(cwd);
157
+ }
158
+ else if (cmd.key === 'kill') {
159
+ trackCommand('kill');
160
+ await killPort(cmdArgs);
161
+ }
162
+ else if (cmd.key === 'setup-autocomplete') {
163
+ trackCommand('setup-autocomplete');
164
+ setupAutocomplete();
165
+ }
166
+ }
167
+ else {
168
+ const code = runShortcut(cmd, shortName, cmdArgs);
169
+ if (code !== 0) {
170
+ process.exit(code); // Stop on first failure
171
+ }
172
+ }
173
+ }
174
+ process.exit(0);
115
175
  }
116
176
  // Default mode (no stack selector)
117
177
  const commands = getCommands(project.type, cwd);
118
- const customCommands = loadCustom(cwd);
178
+ const customCommands = loadCustom(cwd, stacks);
119
179
  // No args / --help / -h → show the reference card
120
180
  if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
121
181
  const downloads = await downloadsPromise;
@@ -130,27 +190,84 @@ async function main() {
130
190
  });
131
191
  process.exit(0);
132
192
  }
133
- // Otherwise treat first arg as a shortcut key
134
- const key = args[0];
135
- const cmd = commands.find(c => c.key === key);
136
- if (cmd) {
137
- runShortcut(cmd, shortName);
138
- return;
193
+ // Default mode: parse stacked commands + args
194
+ const execQueue = await parseCommands(args, builtInCommands, commands, customCommands, cwd);
195
+ if (execQueue.length === 0) {
196
+ const key = args[0];
197
+ const o = process.stdout.isTTY !== false && !process.env['NO_COLOR'] ? '\x1b[38;2;255;80;80m' : '';
198
+ const r = o ? '\x1b[0m' : '';
199
+ console.error(`\n ${o}✖${r} Unknown shortcut: "${key}"`);
200
+ console.error(` Run '${shortName}' to see available shortcuts\n`);
201
+ process.exit(1);
202
+ }
203
+ for (const { cmd, cmdArgs } of execQueue) {
204
+ if (cmd.isBuiltIn) {
205
+ if (cmd.key === 'doc') {
206
+ trackCommand('doc');
207
+ await runDoctor(cwd, stacks);
208
+ }
209
+ else if (cmd.key === 'stats') {
210
+ trackCommand('stats');
211
+ showStats();
212
+ }
213
+ else if (cmd.key === 'add') {
214
+ trackCommand('add');
215
+ await interactiveAdd(cwd, stacks);
216
+ }
217
+ else if (cmd.key === 'env') {
218
+ trackCommand('env');
219
+ checkEnv(cwd);
220
+ }
221
+ else if (cmd.key === 'kill') {
222
+ trackCommand('kill');
223
+ await killPort(cmdArgs);
224
+ }
225
+ else if (cmd.key === 'setup-autocomplete') {
226
+ trackCommand('setup-autocomplete');
227
+ setupAutocomplete();
228
+ }
229
+ }
230
+ else {
231
+ const code = runShortcut(cmd, shortName, cmdArgs);
232
+ if (code !== 0) {
233
+ process.exit(code); // Stop on first failure
234
+ }
235
+ }
139
236
  }
140
- // Check custom shortcuts
141
- const customCmd = customCommands.find(c => c.key === key);
142
- if (customCmd) {
143
- runShortcut(customCmd, shortName);
144
- return;
237
+ process.exit(0);
238
+ }
239
+ async function parseCommands(inputArgs, builtIn, builtInScripts, customScripts, cwd, stack) {
240
+ const allCmds = [...builtIn, ...builtInScripts, ...customScripts];
241
+ const queue = [];
242
+ for (const arg of inputArgs) {
243
+ const matchedCmd = allCmds.find(c => c.key === arg);
244
+ if (matchedCmd) {
245
+ // Start a new command execution block
246
+ queue.push({ cmd: matchedCmd, cmdArgs: [] });
247
+ }
248
+ else {
249
+ // If we haven't matched anything yet (it's the first execution item)
250
+ if (queue.length === 0) {
251
+ // Try the smart file runner fallback
252
+ const { findFileRunner } = await import('./run.js');
253
+ const fileRunnerCmd = await findFileRunner(arg, cwd, stack);
254
+ if (fileRunnerCmd) {
255
+ queue.push({ cmd: fileRunnerCmd, cmdArgs: [] });
256
+ continue;
257
+ }
258
+ }
259
+ // It's an argument. Append it to the LAST matched command
260
+ if (queue.length > 0) {
261
+ queue[queue.length - 1].cmdArgs.push(arg);
262
+ }
263
+ else {
264
+ // If the VERY FIRST argument doesn't match a command, it's invalid.
265
+ // Return empty queue to trigger the "Unknown shortcut" error.
266
+ return [];
267
+ }
268
+ }
145
269
  }
146
- // Unknown shortcut
147
- const o = process.stdout.isTTY !== false && !process.env['NO_COLOR']
148
- ? '\x1b[38;2;255;80;80m'
149
- : '';
150
- const r = o ? '\x1b[0m' : '';
151
- console.error(`\n ${o}✖${r} Unknown shortcut: "${key}"`);
152
- console.error(` Run '${shortName}' to see available shortcuts\n`);
153
- process.exit(1);
270
+ return queue;
154
271
  }
155
272
  main();
156
273
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAEnC,0CAA0C;AAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;IAC/B,MAAM,eAAe,GAAG;QACtB,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/B,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QAChC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;QACrC,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;KAC3D,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,QAAQ,EAAE,GAAG,cAAc,CAAC,CAAC;IAErE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,2EAA2E;QAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,+CAA+C;AAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxC,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAEhD,6CAA6C;AAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,IAAI,CAAC;IACH,MAAM,GAAG,QAAQ,CAAC,iCAAiC,EAAE;QACnD,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC,IAAI,EAAE,CAAC;AACZ,CAAC;AAAC,MAAM,CAAC;IACP,yBAAyB;AAC3B,CAAC;AAED,iBAAiB;AACjB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,+CAA+C;IAC/C,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC;IAExC,MAAM,eAAe,GAAG;QACtB,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;QAChE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;QACnE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;QACnE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;QACrE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;QACtE,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3G,CAAC;IAEF,uEAAuE;IACvE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAClE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,SAAS,aAAa,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,IAAI,cAAc,EAAE,CAAC;QACnB,iDAAiD;QACjD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,oDAAoD;YACpD,mEAAmE;YACnE,wBAAwB;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACpD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC9E,IAAI,aAAa,EAAE,CAAC;oBAClB,4DAA4D;oBAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,sFAAsF;YACtF,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAClE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,2BAA2B,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,sBAAsB,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjF,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;YACzC,OAAO,CAAC;gBACN,MAAM;gBACN,QAAQ;gBACR,GAAG;gBACH,MAAM;gBACN,GAAG,EAAE,SAAS;gBACd,aAAa;gBACb,SAAS;gBACT,cAAc;aACf,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QAEnH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,SAAS,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;YACzC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAClB,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;oBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC/B,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,SAAS,EAAE,CAAC;gBACd,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;oBAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACpC,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;oBAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;oBAC9B,YAAY,CAAC,MAAM,CAAC,CAAC;oBACrB,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;oBAC5C,YAAY,CAAC,oBAAoB,CAAC,CAAC;oBACnC,iBAAiB,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAClD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mCAAmC;IACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE/C,kDAAkD;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;QACzC,OAAO,CAAC;YACN,MAAM;YACN,QAAQ;YACR,GAAG;YACH,MAAM;YACN,GAAG,EAAE,SAAS;YACd,SAAS;YACT,cAAc;SACf,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,8CAA8C;IAC9C,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IAE5F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,gCAAgC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC/B,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC9B,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,oBAAoB,EAAE,CAAC;gBAC5C,YAAY,CAAC,oBAAoB,CAAC,CAAC;gBACnC,iBAAiB,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,SAAmB,EACnB,OAAc,EACd,cAAqB,EACrB,aAAoB,EACpB,GAAW,EACX,KAAc;IAEd,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa,CAAC,CAAC;IAClE,MAAM,KAAK,GAA2C,EAAE,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAEpD,IAAI,UAAU,EAAE,CAAC;YACf,sCAAsC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,qCAAqC;gBACrC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACpD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE5D,IAAI,aAAa,EAAE,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,8DAA8D;gBAC9D,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import type { StackID } from './detect.js';
2
+ export declare function getPythonExecutable(): string;
2
3
  export type ProjectType = StackID;
3
4
  export interface CommandInfo {
4
5
  key: string;
5
6
  label: string;
6
7
  command: string;
8
+ isBuiltIn?: boolean;
9
+ scopes?: string[];
7
10
  }
8
11
  export declare function getCommands(projectType: ProjectType, cwd?: string): CommandInfo[];
package/dist/commands.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { execSync } from 'node:child_process';
4
- function getPythonExecutable() {
4
+ export function getPythonExecutable() {
5
5
  try {
6
6
  execSync('python3 --version', { stdio: 'ignore' });
7
7
  return 'python3';
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../source/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../source/commands.ts"],"names":[],"mappings":"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"}
package/dist/custom.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { CommandInfo } from './commands.js';
2
- export declare function loadCustom(cwd: string): CommandInfo[];
3
- export declare function interactiveAdd(cwd: string): Promise<void>;
2
+ import type { DetectedStack } from './detect.js';
3
+ export declare function loadCustom(cwd: string, detectedStacks?: DetectedStack[]): CommandInfo[];
4
+ export declare function interactiveAdd(cwd: string, detectedStacks?: DetectedStack[]): Promise<void>;
4
5
  export declare function removeShortcut(cwd: string, key: string): void;