aliasmate 2.3.0 → 2.4.0
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/CHANGELOG.md +15 -0
- package/README.md +56 -1
- package/dist/cli/completion.js +4 -4
- package/dist/cli/completion.js.map +1 -1
- package/dist/cli/extras.d.ts +5 -0
- package/dist/cli/extras.d.ts.map +1 -0
- package/dist/cli/extras.js +73 -0
- package/dist/cli/extras.js.map +1 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +140 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/manage.d.ts.map +1 -1
- package/dist/cli/manage.js +5 -3
- package/dist/cli/manage.js.map +1 -1
- package/dist/cli/project.d.ts +2 -0
- package/dist/cli/project.d.ts.map +1 -0
- package/dist/cli/project.js +105 -0
- package/dist/cli/project.js.map +1 -0
- package/dist/cli/run.d.ts +2 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +80 -8
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/sync.d.ts +2 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +122 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/core/clipboard.d.ts +3 -0
- package/dist/core/clipboard.d.ts.map +1 -0
- package/dist/core/clipboard.js +57 -0
- package/dist/core/clipboard.js.map +1 -0
- package/dist/core/commands.d.ts +6 -1
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +19 -2
- package/dist/core/commands.js.map +1 -1
- package/dist/core/project.d.ts +21 -0
- package/dist/core/project.d.ts.map +1 -0
- package/dist/core/project.js +130 -0
- package/dist/core/project.js.map +1 -0
- package/dist/core/recent.d.ts +6 -1
- package/dist/core/recent.d.ts.map +1 -1
- package/dist/core/recent.js +11 -2
- package/dist/core/recent.js.map +1 -1
- package/dist/core/runner.d.ts +22 -4
- package/dist/core/runner.d.ts.map +1 -1
- package/dist/core/runner.js +72 -8
- package/dist/core/runner.js.map +1 -1
- package/dist/core/suggest.d.ts +12 -0
- package/dist/core/suggest.d.ts.map +1 -0
- package/dist/core/suggest.js +109 -0
- package/dist/core/suggest.js.map +1 -0
- package/dist/core/transfer.d.ts.map +1 -1
- package/dist/core/transfer.js +6 -1
- package/dist/core/transfer.js.map +1 -1
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/undo.d.ts +7 -0
- package/dist/core/undo.d.ts.map +1 -0
- package/dist/core/undo.js +34 -0
- package/dist/core/undo.js.map +1 -0
- package/dist/index.js +39 -4
- package/dist/index.js.map +1 -1
- package/dist/ui/format.d.ts +2 -0
- package/dist/ui/format.d.ts.map +1 -1
- package/dist/ui/format.js +5 -2
- package/dist/ui/format.js.map +1 -1
- package/dist/ui/interactive.d.ts +5 -1
- package/dist/ui/interactive.d.ts.map +1 -1
- package/dist/ui/interactive.js +122 -26
- package/dist/ui/interactive.js.map +1 -1
- package/dist/ui/onboarding.d.ts.map +1 -1
- package/dist/ui/onboarding.js +20 -0
- package/dist/ui/onboarding.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/run.js
CHANGED
|
@@ -1,14 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.runHandler = runHandler;
|
|
37
|
+
const readline = __importStar(require("readline"));
|
|
4
38
|
const runner_1 = require("../core/runner");
|
|
5
39
|
const env_1 = require("../core/env");
|
|
6
40
|
const format_1 = require("../ui/format");
|
|
7
41
|
const theme_1 = require("../ui/theme");
|
|
8
|
-
function
|
|
42
|
+
function ask(question) {
|
|
43
|
+
return new Promise((resolve) => {
|
|
44
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
45
|
+
rl.question(question, (answer) => {
|
|
46
|
+
rl.close();
|
|
47
|
+
resolve(answer);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async function collectPlaceholders(plan) {
|
|
52
|
+
if (plan.placeholders.length === 0)
|
|
53
|
+
return {};
|
|
54
|
+
if (!process.stdin.isTTY) {
|
|
55
|
+
throw new Error(`Command has placeholders (${plan.placeholders.map((p) => `{{${p}}}`).join(', ')}) that need an interactive terminal`);
|
|
56
|
+
}
|
|
57
|
+
const values = {};
|
|
58
|
+
for (const name of plan.placeholders) {
|
|
59
|
+
values[name] = (await ask(`${theme_1.theme.accent('?')} ${theme_1.theme.faint(name)} `)).trim();
|
|
60
|
+
}
|
|
61
|
+
return values;
|
|
62
|
+
}
|
|
63
|
+
function printDryRun(plan, command, verbose) {
|
|
9
64
|
const label = (t) => theme_1.theme.faint(t.padEnd(9));
|
|
10
65
|
console.log(`\n${theme_1.icons.dot} ${theme_1.theme.heading(plan.name)} ${theme_1.theme.dim('· dry run — nothing will execute')}\n`);
|
|
11
|
-
|
|
66
|
+
if (plan.saved.steps?.length) {
|
|
67
|
+
console.log(` ${label('chain')}${plan.saved.steps.join(theme_1.theme.faint(' → '))}`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(` ${label('command')}${command}`);
|
|
71
|
+
}
|
|
12
72
|
console.log(` ${label('where')}${theme_1.theme.dim(`${(0, format_1.prettyPath)(plan.cwd)} (${plan.cwdSource})`)}`);
|
|
13
73
|
const env = plan.saved.env ?? {};
|
|
14
74
|
const envCount = Object.keys(env).length;
|
|
@@ -26,22 +86,34 @@ function printDryRun(plan, verbose) {
|
|
|
26
86
|
console.log(theme_1.theme.faint('\n run without --dry-run to execute'));
|
|
27
87
|
}
|
|
28
88
|
async function runHandler(name, pathOverride, options) {
|
|
29
|
-
const plan = (0, runner_1.planRun)(name, pathOverride);
|
|
89
|
+
const plan = (0, runner_1.planRun)(name, pathOverride, options.extraArgs ?? []);
|
|
30
90
|
if (options.dryRun) {
|
|
31
|
-
printDryRun(plan, options.verbose ?? false);
|
|
91
|
+
printDryRun(plan, (0, runner_1.finalCommand)(plan), options.verbose ?? false);
|
|
32
92
|
return;
|
|
33
93
|
}
|
|
34
|
-
|
|
35
|
-
|
|
94
|
+
const values = await collectPlaceholders(plan);
|
|
95
|
+
const command = (0, runner_1.finalCommand)(plan, values);
|
|
96
|
+
if (plan.saved.steps?.length) {
|
|
97
|
+
console.log(`${theme_1.icons.dot} ${theme_1.theme.heading(plan.name)} ${theme_1.theme.faint('·')} ${theme_1.theme.dim(`chain of ${plan.saved.steps.length}`)}`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.log(`${theme_1.icons.dot} ${theme_1.theme.heading(plan.name)} ${theme_1.theme.faint('·')} ${theme_1.theme.dim(command)}`);
|
|
101
|
+
console.log(` ${theme_1.theme.faint((0, format_1.prettyPath)(plan.cwd))}`);
|
|
102
|
+
}
|
|
103
|
+
console.log();
|
|
36
104
|
for (const danger of plan.dangers) {
|
|
37
105
|
(0, theme_1.warn)(`looks dangerous: ${danger}`);
|
|
38
106
|
}
|
|
39
|
-
const result = await (0, runner_1.executePlan)(plan)
|
|
107
|
+
const result = await (0, runner_1.executePlan)(plan, values, (step, index, total) => {
|
|
108
|
+
console.log(`${theme_1.theme.accent(`[${index + 1}/${total}]`)} ${theme_1.theme.heading(step)}`);
|
|
109
|
+
});
|
|
40
110
|
if (result.success) {
|
|
41
111
|
console.log(`\n${theme_1.icons.ok} ${theme_1.theme.faint(`done · ${(result.durationMs / 1000).toFixed(1)}s`)}`);
|
|
42
112
|
}
|
|
43
113
|
else {
|
|
44
|
-
|
|
114
|
+
const failedStep = result.steps?.find((s) => !s.result.success);
|
|
115
|
+
const at = failedStep ? ` at ${theme_1.theme.heading(failedStep.step)}` : '';
|
|
116
|
+
console.error(`\n${theme_1.icons.fail} ${theme_1.theme.error(`exit ${result.exitCode}`)}${at} ${theme_1.theme.faint(`· ${(result.durationMs / 1000).toFixed(1)}s`)}`);
|
|
45
117
|
process.exitCode = result.exitCode;
|
|
46
118
|
}
|
|
47
119
|
}
|
package/dist/cli/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AA6EA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAchE"}
|
package/dist/cli/sync.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.syncHandler = syncHandler;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const transfer_1 = require("../core/transfer");
|
|
42
|
+
const store_1 = require("../core/store");
|
|
43
|
+
const theme_1 = require("../ui/theme");
|
|
44
|
+
const GIST_KEY = 'sync_gist_id';
|
|
45
|
+
const GIST_FILE = 'aliasmate.json';
|
|
46
|
+
function gh(args, input) {
|
|
47
|
+
try {
|
|
48
|
+
return (0, child_process_1.execFileSync)('gh', args, {
|
|
49
|
+
encoding: 'utf8',
|
|
50
|
+
input,
|
|
51
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
52
|
+
}).trim();
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const stderr = error.stderr ?? '';
|
|
56
|
+
if (/command not found|ENOENT/.test(String(error)) ||
|
|
57
|
+
error.code === 'ENOENT') {
|
|
58
|
+
throw new Error('Sync needs the GitHub CLI (gh). Install it from https://cli.github.com');
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`gh failed: ${stderr.trim() || error.message}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function exportToTemp() {
|
|
64
|
+
const tmp = path.join(os.tmpdir(), `aliasmate-sync-${Date.now()}.json`);
|
|
65
|
+
(0, transfer_1.exportToFile)(tmp, { full: true });
|
|
66
|
+
return tmp;
|
|
67
|
+
}
|
|
68
|
+
function push() {
|
|
69
|
+
const tmp = exportToTemp();
|
|
70
|
+
const content = fs.readFileSync(tmp, 'utf8');
|
|
71
|
+
fs.unlinkSync(tmp);
|
|
72
|
+
const body = JSON.stringify({
|
|
73
|
+
description: 'aliasmate sync (private)',
|
|
74
|
+
files: { [GIST_FILE]: { content } },
|
|
75
|
+
});
|
|
76
|
+
const gistId = (0, store_1.getMetadata)(GIST_KEY);
|
|
77
|
+
if (gistId) {
|
|
78
|
+
gh(['api', `gists/${gistId}`, '--method', 'PATCH', '--input', '-'], body);
|
|
79
|
+
(0, theme_1.ok)(`pushed to gist ${theme_1.theme.dim(gistId)}`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const created = gh(['api', 'gists', '--method', 'POST', '--input', '-', '--jq', '.id'], body);
|
|
83
|
+
(0, store_1.setMetadata)(GIST_KEY, created);
|
|
84
|
+
(0, theme_1.ok)(`created private sync gist ${theme_1.theme.dim(created)}`);
|
|
85
|
+
}
|
|
86
|
+
console.log(theme_1.theme.dim(' Pull on another machine with: aliasmate sync pull'));
|
|
87
|
+
}
|
|
88
|
+
function pull() {
|
|
89
|
+
const gistId = (0, store_1.getMetadata)(GIST_KEY);
|
|
90
|
+
if (!gistId) {
|
|
91
|
+
(0, theme_1.fail)('No sync gist configured on this machine yet.');
|
|
92
|
+
console.log(theme_1.theme.dim('Run "aliasmate sync push" on the machine that has your commands,'));
|
|
93
|
+
console.log(theme_1.theme.dim(`then here: aliasmate sync set <gist-id> && aliasmate sync pull`));
|
|
94
|
+
process.exitCode = 1;
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const content = gh(['api', `gists/${gistId}`, '--jq', `.files["${GIST_FILE}"].content`]);
|
|
98
|
+
const tmp = path.join(os.tmpdir(), `aliasmate-pull-${Date.now()}.json`);
|
|
99
|
+
fs.writeFileSync(tmp, content, 'utf8');
|
|
100
|
+
const result = (0, transfer_1.importFromFile)(tmp, { overwrite: () => true });
|
|
101
|
+
fs.unlinkSync(tmp);
|
|
102
|
+
(0, theme_1.ok)(`pulled ${result.imported} command${result.imported === 1 ? '' : 's'} from gist ${theme_1.theme.dim(gistId)}`);
|
|
103
|
+
if (result.backup)
|
|
104
|
+
console.log(theme_1.theme.dim(` previous state backed up to ${result.backup}`));
|
|
105
|
+
}
|
|
106
|
+
function syncHandler(direction, id) {
|
|
107
|
+
switch (direction) {
|
|
108
|
+
case 'push':
|
|
109
|
+
return push();
|
|
110
|
+
case 'pull':
|
|
111
|
+
return pull();
|
|
112
|
+
case 'set':
|
|
113
|
+
if (!id)
|
|
114
|
+
throw new Error('Usage: aliasmate sync set <gist-id>');
|
|
115
|
+
(0, store_1.setMetadata)(GIST_KEY, id);
|
|
116
|
+
(0, theme_1.ok)(`sync gist set to ${theme_1.theme.dim(id)}`);
|
|
117
|
+
return;
|
|
118
|
+
default:
|
|
119
|
+
throw new Error('Usage: aliasmate sync <push|pull|set <gist-id>>');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/core/clipboard.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBrD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.copyToClipboard = copyToClipboard;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const os = __importStar(require("os"));
|
|
39
|
+
/** Copy text to the system clipboard. Returns false if no tool is available. */
|
|
40
|
+
function copyToClipboard(text) {
|
|
41
|
+
const candidates = os.platform() === 'darwin'
|
|
42
|
+
? [['pbcopy', []]]
|
|
43
|
+
: os.platform() === 'win32'
|
|
44
|
+
? [['clip', []]]
|
|
45
|
+
: [
|
|
46
|
+
['wl-copy', []],
|
|
47
|
+
['xclip', ['-selection', 'clipboard']],
|
|
48
|
+
['xsel', ['--clipboard', '--input']],
|
|
49
|
+
];
|
|
50
|
+
for (const [cmd, args] of candidates) {
|
|
51
|
+
const result = (0, child_process_1.spawnSync)(cmd, args, { input: text, stdio: ['pipe', 'ignore', 'ignore'] });
|
|
52
|
+
if (result.status === 0)
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/core/clipboard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0CAgBC;AApBD,iDAA0C;AAC1C,uCAAyB;AAEzB,gFAAgF;AAChF,SAAgB,eAAe,CAAC,IAAY;IAC1C,MAAM,UAAU,GACd,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ;QACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;YACzB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC;gBACE,CAAC,SAAS,EAAE,EAAE,CAAC;gBACf,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBACtC,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACrC,CAAC;IACV,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/core/commands.d.ts
CHANGED
|
@@ -12,8 +12,13 @@ export interface SaveInput {
|
|
|
12
12
|
directory: string;
|
|
13
13
|
pathMode?: PathMode;
|
|
14
14
|
env?: Record<string, string>;
|
|
15
|
+
description?: string;
|
|
16
|
+
tags?: string[];
|
|
17
|
+
steps?: string[];
|
|
15
18
|
}
|
|
16
|
-
export declare function saveCommand(input: SaveInput
|
|
19
|
+
export declare function saveCommand(input: SaveInput, options?: {
|
|
20
|
+
undo?: boolean;
|
|
21
|
+
}): SavedCommand;
|
|
17
22
|
export declare function deleteCommand(name: string): boolean;
|
|
18
23
|
export declare function renameCommand(from: string, to: string): void;
|
|
19
24
|
/** Case-insensitive search across name, command text, and directory. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvE,uDAAuD;AACvD,eAAO,MAAM,cAAc,aA+BzB,CAAC;AAEH,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQhE;AAED,wBAAgB,YAAY,IAAI,UAAU,CAEzC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,YAAY,CA8B5F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAcnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAiC5D;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAexD;AAID,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CASzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,MAAM,GAAG,SAAS,CASpF"}
|
package/dist/core/commands.js
CHANGED
|
@@ -48,6 +48,7 @@ exports.removeShortcutAlias = removeShortcutAlias;
|
|
|
48
48
|
exports.resolveName = resolveName;
|
|
49
49
|
const path = __importStar(require("path"));
|
|
50
50
|
const store_1 = require("./store");
|
|
51
|
+
const undo_1 = require("./undo");
|
|
51
52
|
const ALIASES_KEY = 'command_aliases';
|
|
52
53
|
/** Command names that would shadow CLI subcommands. */
|
|
53
54
|
exports.RESERVED_NAMES = new Set([
|
|
@@ -73,6 +74,13 @@ exports.RESERVED_NAMES = new Set([
|
|
|
73
74
|
'changes',
|
|
74
75
|
'config',
|
|
75
76
|
'stats',
|
|
77
|
+
'copy',
|
|
78
|
+
'undo',
|
|
79
|
+
'chain',
|
|
80
|
+
'tag',
|
|
81
|
+
'init',
|
|
82
|
+
'project',
|
|
83
|
+
'sync',
|
|
76
84
|
'help',
|
|
77
85
|
]);
|
|
78
86
|
/** Naming rules shared by every save surface (CLI args, prompts, TUI form). */
|
|
@@ -99,7 +107,7 @@ function getCommand(name) {
|
|
|
99
107
|
function commandExists(name) {
|
|
100
108
|
return name in listCommands();
|
|
101
109
|
}
|
|
102
|
-
function saveCommand(input) {
|
|
110
|
+
function saveCommand(input, options = {}) {
|
|
103
111
|
const name = input.name.trim();
|
|
104
112
|
const command = input.command.trim();
|
|
105
113
|
if (!name)
|
|
@@ -120,9 +128,14 @@ function saveCommand(input) {
|
|
|
120
128
|
directory: path.resolve(input.directory),
|
|
121
129
|
pathMode: input.pathMode ?? 'saved',
|
|
122
130
|
...(input.env && Object.keys(input.env).length > 0 ? { env: input.env } : {}),
|
|
131
|
+
...(input.description?.trim() ? { description: input.description.trim() } : {}),
|
|
132
|
+
...(input.tags && input.tags.length > 0 ? { tags: input.tags } : {}),
|
|
133
|
+
...(input.steps && input.steps.length > 0 ? { steps: input.steps } : {}),
|
|
123
134
|
createdAt: commands[name]?.createdAt ?? now,
|
|
124
135
|
updatedAt: now,
|
|
125
136
|
};
|
|
137
|
+
if (options.undo !== false)
|
|
138
|
+
(0, undo_1.pushUndo)(commands[name] ? `edit ${name}` : `create ${name}`);
|
|
126
139
|
store_1.configFile.update((data) => {
|
|
127
140
|
data[name] = entry;
|
|
128
141
|
});
|
|
@@ -131,6 +144,7 @@ function saveCommand(input) {
|
|
|
131
144
|
function deleteCommand(name) {
|
|
132
145
|
if (!commandExists(name))
|
|
133
146
|
return false;
|
|
147
|
+
(0, undo_1.pushUndo)(`delete ${name}`);
|
|
134
148
|
store_1.configFile.update((data) => {
|
|
135
149
|
delete data[name];
|
|
136
150
|
});
|
|
@@ -154,6 +168,7 @@ function renameCommand(from, to) {
|
|
|
154
168
|
throw new Error(nameCheck);
|
|
155
169
|
if (commandExists(to))
|
|
156
170
|
throw new Error(`Command "${to}" already exists`);
|
|
171
|
+
(0, undo_1.pushUndo)(`rename ${from} → ${to}`);
|
|
157
172
|
store_1.configFile.update((data) => {
|
|
158
173
|
data[to] = { ...existing, updatedAt: new Date().toISOString() };
|
|
159
174
|
delete data[from];
|
|
@@ -181,7 +196,9 @@ function searchCommands(query) {
|
|
|
181
196
|
for (const [name, cmd] of Object.entries(listCommands())) {
|
|
182
197
|
if (name.toLowerCase().includes(q) ||
|
|
183
198
|
cmd.command.toLowerCase().includes(q) ||
|
|
184
|
-
cmd.directory.toLowerCase().includes(q)
|
|
199
|
+
cmd.directory.toLowerCase().includes(q) ||
|
|
200
|
+
(cmd.description ?? '').toLowerCase().includes(q) ||
|
|
201
|
+
(cmd.tags ?? []).some((t) => t.toLowerCase().includes(q))) {
|
|
185
202
|
result[name] = cmd;
|
|
186
203
|
}
|
|
187
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,kDAQC;AAED,oCAEC;AAED,gCAEC;AAED,sCAEC;AAaD,kCA8BC;AAED,sCAcC;AAED,sCAiCC;AAGD,wCAeC;AAID,kCAEC;AAED,4CASC;AAED,kDAMC;AAMD,kCASC;AAtND,2CAA6B;AAC7B,mCAA+D;AAC/D,iCAAkC;AAGlC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC,uDAAuD;AAC1C,QAAA,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,WAAW;IACX,SAAS;IACT,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH,+EAA+E;AAC/E,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,sBAAsB,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,qDAAqD,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,+CAA+C,CAAC;IACrF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,wDAAwD,CAAC;IAC1F,IAAI,sBAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,IAAI,0CAA0C,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,kBAAU,CAAC,IAAI,EAAgB,CAAC;AACzC,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,IAAI,YAAY,EAAE,CAAC;AAChC,CAAC;AAaD,SAAgB,WAAW,CAAC,KAAgB,EAAE,UAA8B,EAAE;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAiB;QAC1B,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO;QACnC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,GAAG;QAC3C,SAAS,EAAE,GAAG;KACf,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,IAAA,eAAQ,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACzF,kBAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAA,eAAQ,EAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC3B,kBAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,6DAA6D;IAC7D,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAA,mBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY,EAAE,EAAU;IACpD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,aAAa,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAEzE,IAAA,eAAQ,EAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,kBAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAChB,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,cAAc;QAAE,IAAA,mBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtD,MAAM,OAAO,GACX,IAAA,mBAAW,EAAqD,mBAAmB,CAAC,CAAC;IACvF,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC;QACjD,IAAA,mBAAW,EACT,mBAAmB,EACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,SAAgB,cAAc,CAAC,KAAa;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QACzD,IACE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvC,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjD,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACzD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAE/E,SAAgB,WAAW;IACzB,OAAO,EAAE,GAAG,CAAC,IAAA,mBAAW,EAAW,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa,EAAE,WAAmB;IACjE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACjD,IAAI,sBAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACxE,IAAI,aAAa,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAChF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;IACzB,IAAA,mBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,IAAA,mBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,SAAmB,EAAE;IAC9D,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CommandMap, SavedCommand } from './types';
|
|
2
|
+
export declare const PROJECT_FILE = ".aliasmate.json";
|
|
3
|
+
/** Walk up from cwd looking for a .aliasmate.json. */
|
|
4
|
+
export declare function findProjectFile(from?: string): string | null;
|
|
5
|
+
/**
|
|
6
|
+
* Commands defined by the current project. Relative directories resolve
|
|
7
|
+
* against the project root so the file is portable across machines.
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadProjectCommands(from?: string): CommandMap;
|
|
10
|
+
export interface EffectiveCommands {
|
|
11
|
+
commands: CommandMap;
|
|
12
|
+
/** Names that came from the project file (they shadow globals). */
|
|
13
|
+
projectNames: Set<string>;
|
|
14
|
+
projectFile: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** Global commands overlaid with the current project's commands. */
|
|
17
|
+
export declare function listEffectiveCommands(from?: string): EffectiveCommands;
|
|
18
|
+
/** Write a command into the project file (created on demand). */
|
|
19
|
+
export declare function saveProjectCommand(name: string, entry: SavedCommand, root?: string): string;
|
|
20
|
+
export declare function removeProjectCommand(name: string, root?: string): boolean;
|
|
21
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAE9C,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAS3E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAAsB,GAAG,UAAU,CA0B5E;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,CAAC;IACrB,mEAAmE;IACnE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAsB,GAAG,iBAAiB,CAQrF;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,GAAE,MAAsB,GAC3B,MAAM,CAcR;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAsB,GAAG,OAAO,CAQxF"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PROJECT_FILE = void 0;
|
|
37
|
+
exports.findProjectFile = findProjectFile;
|
|
38
|
+
exports.loadProjectCommands = loadProjectCommands;
|
|
39
|
+
exports.listEffectiveCommands = listEffectiveCommands;
|
|
40
|
+
exports.saveProjectCommand = saveProjectCommand;
|
|
41
|
+
exports.removeProjectCommand = removeProjectCommand;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const commands_1 = require("./commands");
|
|
45
|
+
exports.PROJECT_FILE = '.aliasmate.json';
|
|
46
|
+
/** Walk up from cwd looking for a .aliasmate.json. */
|
|
47
|
+
function findProjectFile(from = process.cwd()) {
|
|
48
|
+
let dir = path.resolve(from);
|
|
49
|
+
for (;;) {
|
|
50
|
+
const candidate = path.join(dir, exports.PROJECT_FILE);
|
|
51
|
+
if (fs.existsSync(candidate))
|
|
52
|
+
return candidate;
|
|
53
|
+
const parent = path.dirname(dir);
|
|
54
|
+
if (parent === dir)
|
|
55
|
+
return null;
|
|
56
|
+
dir = parent;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Commands defined by the current project. Relative directories resolve
|
|
61
|
+
* against the project root so the file is portable across machines.
|
|
62
|
+
*/
|
|
63
|
+
function loadProjectCommands(from = process.cwd()) {
|
|
64
|
+
const file = findProjectFile(from);
|
|
65
|
+
if (!file)
|
|
66
|
+
return {};
|
|
67
|
+
const root = path.dirname(file);
|
|
68
|
+
try {
|
|
69
|
+
const raw = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
70
|
+
const result = {};
|
|
71
|
+
for (const [name, entry] of Object.entries(raw)) {
|
|
72
|
+
if (typeof entry?.command !== 'string')
|
|
73
|
+
continue;
|
|
74
|
+
const directory = entry.directory
|
|
75
|
+
? path.isAbsolute(entry.directory)
|
|
76
|
+
? entry.directory
|
|
77
|
+
: path.join(root, entry.directory)
|
|
78
|
+
: root;
|
|
79
|
+
result[name] = {
|
|
80
|
+
pathMode: 'saved',
|
|
81
|
+
...entry,
|
|
82
|
+
createdAt: entry.createdAt ?? '',
|
|
83
|
+
updatedAt: entry.updatedAt ?? '',
|
|
84
|
+
directory,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return {};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Global commands overlaid with the current project's commands. */
|
|
94
|
+
function listEffectiveCommands(from = process.cwd()) {
|
|
95
|
+
const projectFile = findProjectFile(from);
|
|
96
|
+
const project = projectFile ? loadProjectCommands(from) : {};
|
|
97
|
+
return {
|
|
98
|
+
commands: { ...(0, commands_1.listCommands)(), ...project },
|
|
99
|
+
projectNames: new Set(Object.keys(project)),
|
|
100
|
+
projectFile,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** Write a command into the project file (created on demand). */
|
|
104
|
+
function saveProjectCommand(name, entry, root = process.cwd()) {
|
|
105
|
+
const file = findProjectFile(root) ?? path.join(path.resolve(root), exports.PROJECT_FILE);
|
|
106
|
+
const existing = fs.existsSync(file)
|
|
107
|
+
? JSON.parse(fs.readFileSync(file, 'utf8'))
|
|
108
|
+
: {};
|
|
109
|
+
const projectRoot = path.dirname(file);
|
|
110
|
+
const relative = path.relative(projectRoot, entry.directory);
|
|
111
|
+
existing[name] = {
|
|
112
|
+
...entry,
|
|
113
|
+
// Store project-relative paths so teammates can use the same file.
|
|
114
|
+
directory: relative === '' ? '.' : relative.startsWith('..') ? entry.directory : relative,
|
|
115
|
+
};
|
|
116
|
+
fs.writeFileSync(file, JSON.stringify(existing, null, 2) + '\n', 'utf8');
|
|
117
|
+
return file;
|
|
118
|
+
}
|
|
119
|
+
function removeProjectCommand(name, root = process.cwd()) {
|
|
120
|
+
const file = findProjectFile(root);
|
|
121
|
+
if (!file)
|
|
122
|
+
return false;
|
|
123
|
+
const existing = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
124
|
+
if (!(name in existing))
|
|
125
|
+
return false;
|
|
126
|
+
delete existing[name];
|
|
127
|
+
fs.writeFileSync(file, JSON.stringify(existing, null, 2) + '\n', 'utf8');
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"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"}
|