aliasmate 2.0.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 +53 -3
- package/README.md +98 -10
- 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 +2 -3
- package/dist/cli/manage.d.ts.map +1 -1
- package/dist/cli/manage.js +47 -27
- 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 +90 -16
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/save.d.ts +7 -8
- package/dist/cli/save.d.ts.map +1 -1
- package/dist/cli/save.js +71 -33
- package/dist/cli/save.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/cli/transfer.d.ts +1 -0
- package/dist/cli/transfer.d.ts.map +1 -1
- package/dist/cli/transfer.js +40 -59
- package/dist/cli/transfer.js.map +1 -1
- 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 +8 -1
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +59 -4
- 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 +20 -0
- package/dist/core/transfer.d.ts.map +1 -0
- package/dist/core/transfer.js +115 -0
- package/dist/core/transfer.js.map +1 -0
- 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 +53 -15
- package/dist/index.js.map +1 -1
- package/dist/ui/format.d.ts +6 -1
- package/dist/ui/format.d.ts.map +1 -1
- package/dist/ui/format.js +64 -18
- package/dist/ui/format.js.map +1 -1
- package/dist/ui/interactive.d.ts +63 -3
- package/dist/ui/interactive.d.ts.map +1 -1
- package/dist/ui/interactive.js +701 -95
- package/dist/ui/interactive.js.map +1 -1
- package/dist/ui/onboarding.d.ts.map +1 -1
- package/dist/ui/onboarding.js +27 -7
- package/dist/ui/onboarding.js.map +1 -1
- package/dist/ui/prompts.d.ts +1 -12
- package/dist/ui/prompts.d.ts.map +1 -1
- package/dist/ui/prompts.js +45 -91
- package/dist/ui/prompts.js.map +1 -1
- package/dist/ui/table.d.ts +18 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +54 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/theme.d.ts +8 -6
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js +33 -18
- package/dist/ui/theme.js.map +1 -1
- package/package.json +7 -7
package/dist/cli/save.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/cli/save.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/cli/save.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,kCAIC;AAMD,kCAiCC;AAvDD,+CAAoE;AACpE,6CAAuE;AACvE,uCAA8C;AAE9C,SAAS,UAAU;IACjB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAA,YAAI,EAAC,6CAA6C,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AAC/D,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,UAAU,EAAE;QAAE,OAAO;IAC1B,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAC9D,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAA,YAAI,EAAC,SAAS,CAAC,CAAC;YAChB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAA,YAAI,EAAC,yDAAyD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,KAAK,IAAA,8BAAoB,GAAE,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,yDAAyD;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAA,YAAI,EAAC,0EAA0E,CAAC,CAAC;YACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAA,sBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtE,IAAA,UAAE,EAAC,SAAS,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAC9D,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -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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"}
|
package/dist/cli/transfer.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA0B9F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC/D"}
|
package/dist/cli/transfer.js
CHANGED
|
@@ -36,83 +36,64 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.exportHandler = exportHandler;
|
|
37
37
|
exports.importHandler = importHandler;
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
39
|
const commands_1 = require("../core/commands");
|
|
40
|
+
const transfer_1 = require("../core/transfer");
|
|
41
41
|
const format_1 = require("../ui/format");
|
|
42
|
-
const store_1 = require("../core/store");
|
|
43
42
|
const theme_1 = require("../ui/theme");
|
|
44
43
|
function exportHandler(file, options) {
|
|
45
|
-
const commands = (0, commands_1.listCommands)();
|
|
46
|
-
if (Object.keys(commands).length === 0) {
|
|
47
|
-
(0, theme_1.warn)('No commands to export');
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
44
|
const format = options.format ?? (file.endsWith('.yaml') || file.endsWith('.yml') ? 'yaml' : 'json');
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
45
|
+
let count;
|
|
46
|
+
if (format === 'yaml') {
|
|
47
|
+
const commands = (0, commands_1.listCommands)();
|
|
48
|
+
count = Object.keys(commands).length;
|
|
49
|
+
if (count === 0) {
|
|
50
|
+
(0, theme_1.warn)('No commands to export');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
fs.writeFileSync((0, transfer_1.expandPath)(file), (0, format_1.toYaml)(commands, !options.full), 'utf8');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
count = (0, transfer_1.exportToFile)(file, { full: options.full });
|
|
57
|
+
}
|
|
58
|
+
(0, theme_1.ok)(`Exported ${count} command${count === 1 ? '' : 's'} to ${theme_1.theme.name(file)}`);
|
|
59
|
+
if (options.full) {
|
|
60
|
+
console.log(theme_1.theme.warning(' Full export: secret env values are in PLAIN TEXT — keep this file safe.'));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log(theme_1.theme.dim(' Sensitive env values were masked for safe sharing.'));
|
|
64
|
+
console.log(theme_1.theme.dim(' For a restorable backup with real secret values, use --full.'));
|
|
65
|
+
}
|
|
61
66
|
}
|
|
62
67
|
async function importHandler(file) {
|
|
63
|
-
const resolved =
|
|
68
|
+
const resolved = (0, transfer_1.expandPath)(file);
|
|
64
69
|
if (!fs.existsSync(resolved)) {
|
|
65
70
|
(0, theme_1.fail)(`File not found: ${file}`);
|
|
66
71
|
process.exitCode = 1;
|
|
67
72
|
return;
|
|
68
73
|
}
|
|
69
|
-
|
|
74
|
+
// Decide the conflict policy up front with a single confirmation.
|
|
75
|
+
let overwrite = false;
|
|
70
76
|
try {
|
|
71
|
-
incoming = JSON.parse(fs.readFileSync(resolved, 'utf8'));
|
|
77
|
+
const incoming = JSON.parse(fs.readFileSync(resolved, 'utf8'));
|
|
78
|
+
const conflicts = Object.keys(incoming).filter((name) => (0, commands_1.commandExists)(name));
|
|
79
|
+
if (conflicts.length > 0 && process.stdin.isTTY && process.stdout.isTTY) {
|
|
80
|
+
const { confirm } = await Promise.resolve().then(() => __importStar(require('../ui/prompts')));
|
|
81
|
+
overwrite = await confirm(`${conflicts.length} command${conflicts.length === 1 ? '' : 's'} already exist (${conflicts
|
|
82
|
+
.slice(0, 5)
|
|
83
|
+
.join(', ')}${conflicts.length > 5 ? ', …' : ''}). Overwrite?`);
|
|
84
|
+
}
|
|
72
85
|
}
|
|
73
86
|
catch {
|
|
74
87
|
(0, theme_1.fail)('Could not parse the import file (JSON expected)');
|
|
75
88
|
process.exitCode = 1;
|
|
76
89
|
return;
|
|
77
90
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
let imported = 0;
|
|
86
|
-
let skipped = 0;
|
|
87
|
-
for (const [name, entry] of Object.entries(incoming)) {
|
|
88
|
-
if (!isValidEntry(entry)) {
|
|
89
|
-
(0, theme_1.warn)(`Skipping "${name}": invalid entry`);
|
|
90
|
-
skipped++;
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
if ((0, commands_1.commandExists)(name)) {
|
|
94
|
-
// Prompting is only possible on a TTY; in scripts, keep existing entries.
|
|
95
|
-
if (!process.stdin.isTTY) {
|
|
96
|
-
(0, theme_1.warn)(`Skipping "${name}": already exists (non-interactive)`);
|
|
97
|
-
skipped++;
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
const { confirm } = await Promise.resolve().then(() => __importStar(require('../ui/prompts')));
|
|
101
|
-
const overwrite = await confirm(`"${name}" already exists. Overwrite?`);
|
|
102
|
-
if (!overwrite) {
|
|
103
|
-
skipped++;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
(0, commands_1.saveCommand)({
|
|
108
|
-
name,
|
|
109
|
-
command: entry.command,
|
|
110
|
-
directory: entry.directory,
|
|
111
|
-
pathMode: entry.pathMode,
|
|
112
|
-
env: entry.env,
|
|
113
|
-
});
|
|
114
|
-
imported++;
|
|
115
|
-
}
|
|
116
|
-
(0, theme_1.ok)(`Imported ${imported} command${imported === 1 ? '' : 's'}${skipped ? theme_1.theme.dim(` (${skipped} skipped)`) : ''}`);
|
|
91
|
+
const result = (0, transfer_1.importFromFile)(file, { overwrite: () => overwrite });
|
|
92
|
+
if (result.backup)
|
|
93
|
+
console.log(theme_1.theme.dim(`Backup written to ${result.backup}`));
|
|
94
|
+
for (const name of result.invalid)
|
|
95
|
+
(0, theme_1.warn)(`Skipping "${name}": invalid entry`);
|
|
96
|
+
const skippedNote = result.skipped.length > 0 ? theme_1.theme.dim(` (${result.skipped.length} skipped)`) : '';
|
|
97
|
+
(0, theme_1.ok)(`Imported ${result.imported} command${result.imported === 1 ? '' : 's'}${skippedNote}`);
|
|
117
98
|
}
|
|
118
99
|
//# sourceMappingURL=transfer.js.map
|
package/dist/cli/transfer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,sCA0BC;AAED,sCAiCC;AAnED,uCAAyB;AACzB,+CAA+D;AAC/D,+CAA4E;AAC5E,yCAAsC;AACtC,uCAAoD;AAEpD,SAAgB,aAAa,CAAC,IAAY,EAAE,OAA4C;IACtF,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAExF,IAAI,KAAa,CAAC;IAClB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAA,uBAAY,GAAE,CAAC;QAChC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACrC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,IAAA,YAAI,EAAC,uBAAuB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAA,qBAAU,EAAC,IAAI,CAAC,EAAE,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAA,uBAAY,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAA,UAAE,EAAC,YAAY,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,aAAK,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAC3F,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAA,YAAI,EAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,kEAAkE;IAClE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CAAC;QAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxE,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;YAClD,SAAS,GAAG,MAAM,OAAO,CACvB,GAAG,SAAS,CAAC,MAAM,WAAW,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB,SAAS;iBACxF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAA,YAAI,EAAC,iDAAiD,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,IAAA,YAAI,EAAC,aAAa,IAAI,kBAAkB,CAAC,CAAC;IAC7E,MAAM,WAAW,GACf,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,IAAA,UAAE,EAAC,YAAY,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { CommandMap, AliasMap, PathMode, SavedCommand } from './types';
|
|
2
2
|
/** Command names that would shadow CLI subcommands. */
|
|
3
3
|
export declare const RESERVED_NAMES: Set<string>;
|
|
4
|
+
/** Naming rules shared by every save surface (CLI args, prompts, TUI form). */
|
|
5
|
+
export declare function validateCommandName(value: string): true | string;
|
|
4
6
|
export declare function listCommands(): CommandMap;
|
|
5
7
|
export declare function getCommand(name: string): SavedCommand | undefined;
|
|
6
8
|
export declare function commandExists(name: string): boolean;
|
|
@@ -10,8 +12,13 @@ export interface SaveInput {
|
|
|
10
12
|
directory: string;
|
|
11
13
|
pathMode?: PathMode;
|
|
12
14
|
env?: Record<string, string>;
|
|
15
|
+
description?: string;
|
|
16
|
+
tags?: string[];
|
|
17
|
+
steps?: string[];
|
|
13
18
|
}
|
|
14
|
-
export declare function saveCommand(input: SaveInput
|
|
19
|
+
export declare function saveCommand(input: SaveInput, options?: {
|
|
20
|
+
undo?: boolean;
|
|
21
|
+
}): SavedCommand;
|
|
15
22
|
export declare function deleteCommand(name: string): boolean;
|
|
16
23
|
export declare function renameCommand(from: string, to: string): void;
|
|
17
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
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.RESERVED_NAMES = void 0;
|
|
37
|
+
exports.validateCommandName = validateCommandName;
|
|
37
38
|
exports.listCommands = listCommands;
|
|
38
39
|
exports.getCommand = getCommand;
|
|
39
40
|
exports.commandExists = commandExists;
|
|
@@ -47,6 +48,7 @@ exports.removeShortcutAlias = removeShortcutAlias;
|
|
|
47
48
|
exports.resolveName = resolveName;
|
|
48
49
|
const path = __importStar(require("path"));
|
|
49
50
|
const store_1 = require("./store");
|
|
51
|
+
const undo_1 = require("./undo");
|
|
50
52
|
const ALIASES_KEY = 'command_aliases';
|
|
51
53
|
/** Command names that would shadow CLI subcommands. */
|
|
52
54
|
exports.RESERVED_NAMES = new Set([
|
|
@@ -58,6 +60,8 @@ exports.RESERVED_NAMES = new Set([
|
|
|
58
60
|
'search',
|
|
59
61
|
'find',
|
|
60
62
|
'edit',
|
|
63
|
+
'rename',
|
|
64
|
+
'mv',
|
|
61
65
|
'delete',
|
|
62
66
|
'rm',
|
|
63
67
|
'export',
|
|
@@ -70,8 +74,30 @@ exports.RESERVED_NAMES = new Set([
|
|
|
70
74
|
'changes',
|
|
71
75
|
'config',
|
|
72
76
|
'stats',
|
|
77
|
+
'copy',
|
|
78
|
+
'undo',
|
|
79
|
+
'chain',
|
|
80
|
+
'tag',
|
|
81
|
+
'init',
|
|
82
|
+
'project',
|
|
83
|
+
'sync',
|
|
73
84
|
'help',
|
|
74
85
|
]);
|
|
86
|
+
/** Naming rules shared by every save surface (CLI args, prompts, TUI form). */
|
|
87
|
+
function validateCommandName(value) {
|
|
88
|
+
const name = value.trim();
|
|
89
|
+
if (!name)
|
|
90
|
+
return 'Name cannot be empty';
|
|
91
|
+
if (/\s/.test(name))
|
|
92
|
+
return 'Name cannot contain spaces — try dashes: build-prod';
|
|
93
|
+
if (!/^[\w.:-]+$/.test(name))
|
|
94
|
+
return 'Only letters, digits, and - _ . : are allowed';
|
|
95
|
+
if (name.startsWith('@'))
|
|
96
|
+
return 'Names starting with @ are reserved for recent commands';
|
|
97
|
+
if (exports.RESERVED_NAMES.has(name))
|
|
98
|
+
return `"${name}" is a reserved word — pick another name`;
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
75
101
|
function listCommands() {
|
|
76
102
|
return store_1.configFile.read();
|
|
77
103
|
}
|
|
@@ -81,7 +107,7 @@ function getCommand(name) {
|
|
|
81
107
|
function commandExists(name) {
|
|
82
108
|
return name in listCommands();
|
|
83
109
|
}
|
|
84
|
-
function saveCommand(input) {
|
|
110
|
+
function saveCommand(input, options = {}) {
|
|
85
111
|
const name = input.name.trim();
|
|
86
112
|
const command = input.command.trim();
|
|
87
113
|
if (!name)
|
|
@@ -102,9 +128,14 @@ function saveCommand(input) {
|
|
|
102
128
|
directory: path.resolve(input.directory),
|
|
103
129
|
pathMode: input.pathMode ?? 'saved',
|
|
104
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 } : {}),
|
|
105
134
|
createdAt: commands[name]?.createdAt ?? now,
|
|
106
135
|
updatedAt: now,
|
|
107
136
|
};
|
|
137
|
+
if (options.undo !== false)
|
|
138
|
+
(0, undo_1.pushUndo)(commands[name] ? `edit ${name}` : `create ${name}`);
|
|
108
139
|
store_1.configFile.update((data) => {
|
|
109
140
|
data[name] = entry;
|
|
110
141
|
});
|
|
@@ -113,6 +144,7 @@ function saveCommand(input) {
|
|
|
113
144
|
function deleteCommand(name) {
|
|
114
145
|
if (!commandExists(name))
|
|
115
146
|
return false;
|
|
147
|
+
(0, undo_1.pushUndo)(`delete ${name}`);
|
|
116
148
|
store_1.configFile.update((data) => {
|
|
117
149
|
delete data[name];
|
|
118
150
|
});
|
|
@@ -131,10 +163,31 @@ function renameCommand(from, to) {
|
|
|
131
163
|
const existing = commands[from];
|
|
132
164
|
if (!existing)
|
|
133
165
|
throw new Error(`Command "${from}" not found`);
|
|
166
|
+
const nameCheck = validateCommandName(to);
|
|
167
|
+
if (nameCheck !== true)
|
|
168
|
+
throw new Error(nameCheck);
|
|
134
169
|
if (commandExists(to))
|
|
135
170
|
throw new Error(`Command "${to}" already exists`);
|
|
136
|
-
|
|
137
|
-
|
|
171
|
+
(0, undo_1.pushUndo)(`rename ${from} → ${to}`);
|
|
172
|
+
store_1.configFile.update((data) => {
|
|
173
|
+
data[to] = { ...existing, updatedAt: new Date().toISOString() };
|
|
174
|
+
delete data[from];
|
|
175
|
+
});
|
|
176
|
+
// Shortcut aliases and run history follow the command to its new name.
|
|
177
|
+
const aliases = listAliases();
|
|
178
|
+
let aliasesChanged = false;
|
|
179
|
+
for (const a of Object.keys(aliases)) {
|
|
180
|
+
if (aliases[a] === from) {
|
|
181
|
+
aliases[a] = to;
|
|
182
|
+
aliasesChanged = true;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (aliasesChanged)
|
|
186
|
+
(0, store_1.setMetadata)(ALIASES_KEY, aliases);
|
|
187
|
+
const history = (0, store_1.getMetadata)('execution_history');
|
|
188
|
+
if (history?.some((e) => e.commandName === from)) {
|
|
189
|
+
(0, store_1.setMetadata)('execution_history', history.map((e) => (e.commandName === from ? { ...e, commandName: to } : e)));
|
|
190
|
+
}
|
|
138
191
|
}
|
|
139
192
|
/** Case-insensitive search across name, command text, and directory. */
|
|
140
193
|
function searchCommands(query) {
|
|
@@ -143,7 +196,9 @@ function searchCommands(query) {
|
|
|
143
196
|
for (const [name, cmd] of Object.entries(listCommands())) {
|
|
144
197
|
if (name.toLowerCase().includes(q) ||
|
|
145
198
|
cmd.command.toLowerCase().includes(q) ||
|
|
146
|
-
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))) {
|
|
147
202
|
result[name] = cmd;
|
|
148
203
|
}
|
|
149
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":"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"}
|
|
@@ -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"}
|