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/core/recent.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { ExecutionEntry } from './types';
|
|
2
2
|
export declare function getExecutionHistory(): ExecutionEntry[];
|
|
3
|
-
export declare function recordExecution(commandName: string
|
|
3
|
+
export declare function recordExecution(commandName: string, outcome?: {
|
|
4
|
+
exitCode: number;
|
|
5
|
+
durationMs: number;
|
|
6
|
+
}): void;
|
|
7
|
+
/** Most recent execution entry for a command, if any. */
|
|
8
|
+
export declare function getLastExecution(commandName: string): ExecutionEntry | undefined;
|
|
4
9
|
export declare function clearExecutionHistory(): void;
|
|
5
10
|
/** Unique command names, most recently run first. Powers @N references. */
|
|
6
11
|
export declare function getRecentNames(limit?: number): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../src/core/recent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAEtD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../src/core/recent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAEtD;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAQN;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEhF;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAUvD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gDAAgD;AAChD,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAe9C"}
|
package/dist/core/recent.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getExecutionHistory = getExecutionHistory;
|
|
4
4
|
exports.recordExecution = recordExecution;
|
|
5
|
+
exports.getLastExecution = getLastExecution;
|
|
5
6
|
exports.clearExecutionHistory = clearExecutionHistory;
|
|
6
7
|
exports.getRecentNames = getRecentNames;
|
|
7
8
|
exports.getUsageStats = getUsageStats;
|
|
@@ -11,11 +12,19 @@ const MAX_ENTRIES = 200;
|
|
|
11
12
|
function getExecutionHistory() {
|
|
12
13
|
return (0, store_1.getMetadata)(HISTORY_KEY) ?? [];
|
|
13
14
|
}
|
|
14
|
-
function recordExecution(commandName) {
|
|
15
|
+
function recordExecution(commandName, outcome) {
|
|
15
16
|
const history = getExecutionHistory();
|
|
16
|
-
history.unshift({
|
|
17
|
+
history.unshift({
|
|
18
|
+
commandName,
|
|
19
|
+
executedAt: new Date().toISOString(),
|
|
20
|
+
...(outcome ? { exitCode: outcome.exitCode, durationMs: outcome.durationMs } : {}),
|
|
21
|
+
});
|
|
17
22
|
(0, store_1.setMetadata)(HISTORY_KEY, history.slice(0, MAX_ENTRIES));
|
|
18
23
|
}
|
|
24
|
+
/** Most recent execution entry for a command, if any. */
|
|
25
|
+
function getLastExecution(commandName) {
|
|
26
|
+
return getExecutionHistory().find((e) => e.commandName === commandName);
|
|
27
|
+
}
|
|
19
28
|
function clearExecutionHistory() {
|
|
20
29
|
(0, store_1.setMetadata)(HISTORY_KEY, []);
|
|
21
30
|
}
|
package/dist/core/recent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recent.js","sourceRoot":"","sources":["../../src/core/recent.ts"],"names":[],"mappings":";;AAMA,kDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"recent.js","sourceRoot":"","sources":["../../src/core/recent.ts"],"names":[],"mappings":";;AAMA,kDAEC;AAED,0CAWC;AAGD,4CAEC;AAED,sDAEC;AAGD,wCAUC;AASD,sCAeC;AAnED,mCAAmD;AAGnD,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,SAAgB,mBAAmB;IACjC,OAAO,IAAA,mBAAW,EAAmB,WAAW,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,SAAgB,eAAe,CAC7B,WAAmB,EACnB,OAAkD;IAElD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,OAAO,CAAC,OAAO,CAAC;QACd,WAAW;QACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC,CAAC;IACH,IAAA,mBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,yDAAyD;AACzD,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,OAAO,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,qBAAqB;IACnC,IAAA,mBAAW,EAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,2EAA2E;AAC3E,SAAgB,cAAc,CAAC,KAAc;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK;YAAE,MAAM;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD,gDAAgD;AAChD,SAAgB,aAAa;IAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC3B,IAAI,EAAE,KAAK,CAAC,WAAW;gBACvB,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/core/runner.d.ts
CHANGED
|
@@ -1,13 +1,31 @@
|
|
|
1
|
-
import { SavedCommand } from './types';
|
|
1
|
+
import { ExecutionResult, SavedCommand } from './types';
|
|
2
2
|
export interface RunPlan {
|
|
3
3
|
name: string;
|
|
4
4
|
saved: SavedCommand;
|
|
5
5
|
cwd: string;
|
|
6
6
|
cwdSource: 'saved' | 'current' | 'override';
|
|
7
7
|
dangers: string[];
|
|
8
|
+
/** Extra CLI args (after --) appended to the command line. */
|
|
9
|
+
extraArgs: string[];
|
|
10
|
+
/** Distinct {{placeholder}} names found in the command text. */
|
|
11
|
+
placeholders: string[];
|
|
8
12
|
}
|
|
13
|
+
export declare function findPlaceholders(command: string): string[];
|
|
14
|
+
export declare function fillPlaceholders(command: string, values: Record<string, string>): string;
|
|
9
15
|
/** Resolve a name (or alias or @N) into a concrete execution plan. */
|
|
10
|
-
export declare function planRun(nameInput: string, pathOverride?: string): RunPlan;
|
|
11
|
-
/**
|
|
12
|
-
export declare function
|
|
16
|
+
export declare function planRun(nameInput: string, pathOverride?: string, extraArgs?: string[]): RunPlan;
|
|
17
|
+
/** Compose the final command line from plan + placeholder values + extra args. */
|
|
18
|
+
export declare function finalCommand(plan: RunPlan, values?: Record<string, string>): string;
|
|
19
|
+
export interface StepOutcome {
|
|
20
|
+
step: string;
|
|
21
|
+
result: ExecutionResult;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Execute a plan, recording it in the usage history.
|
|
25
|
+
* Chains (saved.steps) run each referenced command sequentially in its own
|
|
26
|
+
* directory/env, stopping at the first failure.
|
|
27
|
+
*/
|
|
28
|
+
export declare function executePlan(plan: RunPlan, values?: Record<string, string>, onStep?: (step: string, index: number, total: number) => void): Promise<ExecutionResult & {
|
|
29
|
+
steps?: StepOutcome[];
|
|
30
|
+
}>;
|
|
13
31
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gEAAgE;IAChE,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAExF;AAED,sEAAsE;AACtE,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAmCT;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAOvF;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACnC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAC5D,OAAO,CAAC,eAAe,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CA4BtD"}
|
package/dist/core/runner.js
CHANGED
|
@@ -33,22 +33,37 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.findPlaceholders = findPlaceholders;
|
|
37
|
+
exports.fillPlaceholders = fillPlaceholders;
|
|
36
38
|
exports.planRun = planRun;
|
|
39
|
+
exports.finalCommand = finalCommand;
|
|
37
40
|
exports.executePlan = executePlan;
|
|
38
41
|
const path = __importStar(require("path"));
|
|
39
42
|
const commands_1 = require("./commands");
|
|
43
|
+
const project_1 = require("./project");
|
|
40
44
|
const recent_1 = require("./recent");
|
|
41
45
|
const executor_1 = require("./executor");
|
|
42
46
|
const validate_1 = require("./validate");
|
|
47
|
+
const PLACEHOLDER = /\{\{\s*([A-Za-z_][A-Za-z0-9_-]*)\s*\}\}/g;
|
|
48
|
+
function findPlaceholders(command) {
|
|
49
|
+
const names = new Set();
|
|
50
|
+
for (const match of command.matchAll(PLACEHOLDER))
|
|
51
|
+
names.add(match[1]);
|
|
52
|
+
return [...names];
|
|
53
|
+
}
|
|
54
|
+
function fillPlaceholders(command, values) {
|
|
55
|
+
return command.replace(PLACEHOLDER, (_, name) => values[name] ?? '');
|
|
56
|
+
}
|
|
43
57
|
/** Resolve a name (or alias or @N) into a concrete execution plan. */
|
|
44
|
-
function planRun(nameInput, pathOverride) {
|
|
45
|
-
const
|
|
58
|
+
function planRun(nameInput, pathOverride, extraArgs = []) {
|
|
59
|
+
const effective = (0, project_1.listEffectiveCommands)();
|
|
60
|
+
const name = effective.commands[nameInput] ? nameInput : (0, commands_1.resolveName)(nameInput, (0, recent_1.getRecentNames)());
|
|
46
61
|
if (!name) {
|
|
47
62
|
throw new Error(nameInput.startsWith('@')
|
|
48
63
|
? `No recent command at ${nameInput}. Run "aliasmate recent" to see history.`
|
|
49
64
|
: `Command "${nameInput}" not found. Run "aliasmate list" to see saved commands.`);
|
|
50
65
|
}
|
|
51
|
-
const saved =
|
|
66
|
+
const saved = effective.commands[name];
|
|
52
67
|
if (!saved)
|
|
53
68
|
throw new Error(`Command "${name}" not found`);
|
|
54
69
|
let cwd;
|
|
@@ -65,19 +80,68 @@ function planRun(nameInput, pathOverride) {
|
|
|
65
80
|
cwd = saved.directory;
|
|
66
81
|
cwdSource = 'saved';
|
|
67
82
|
}
|
|
68
|
-
return {
|
|
83
|
+
return {
|
|
84
|
+
name,
|
|
85
|
+
saved,
|
|
86
|
+
cwd,
|
|
87
|
+
cwdSource,
|
|
88
|
+
dangers: (0, validate_1.getDangerWarnings)(saved.command),
|
|
89
|
+
extraArgs,
|
|
90
|
+
placeholders: saved.steps?.length ? [] : findPlaceholders(saved.command),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** Compose the final command line from plan + placeholder values + extra args. */
|
|
94
|
+
function finalCommand(plan, values = {}) {
|
|
95
|
+
let cmd = plan.placeholders.length > 0
|
|
96
|
+
? fillPlaceholders(plan.saved.command, values)
|
|
97
|
+
: plan.saved.command;
|
|
98
|
+
if (plan.extraArgs.length > 0)
|
|
99
|
+
cmd = `${cmd} ${plan.extraArgs.join(' ')}`;
|
|
100
|
+
return cmd;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Execute a plan, recording it in the usage history.
|
|
104
|
+
* Chains (saved.steps) run each referenced command sequentially in its own
|
|
105
|
+
* directory/env, stopping at the first failure.
|
|
106
|
+
*/
|
|
107
|
+
async function executePlan(plan, values = {}, onStep) {
|
|
108
|
+
if (plan.saved.steps?.length) {
|
|
109
|
+
const outcomes = [];
|
|
110
|
+
const started = Date.now();
|
|
111
|
+
for (let i = 0; i < plan.saved.steps.length; i++) {
|
|
112
|
+
const stepName = plan.saved.steps[i];
|
|
113
|
+
const stepPlan = planRun(stepName);
|
|
114
|
+
onStep?.(stepName, i, plan.saved.steps.length);
|
|
115
|
+
const result = await runSingle(stepPlan, stepPlan.saved.command);
|
|
116
|
+
outcomes.push({ step: stepName, result });
|
|
117
|
+
if (!result.success) {
|
|
118
|
+
const total = {
|
|
119
|
+
success: false,
|
|
120
|
+
exitCode: result.exitCode,
|
|
121
|
+
durationMs: Date.now() - started,
|
|
122
|
+
};
|
|
123
|
+
(0, recent_1.recordExecution)(plan.name, total);
|
|
124
|
+
return { ...total, steps: outcomes };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const total = { success: true, exitCode: 0, durationMs: Date.now() - started };
|
|
128
|
+
(0, recent_1.recordExecution)(plan.name, total);
|
|
129
|
+
return { ...total, steps: outcomes };
|
|
130
|
+
}
|
|
131
|
+
const result = await runSingle(plan, finalCommand(plan, values));
|
|
132
|
+
(0, recent_1.recordExecution)(plan.name, { exitCode: result.exitCode, durationMs: result.durationMs });
|
|
133
|
+
return result;
|
|
69
134
|
}
|
|
70
|
-
|
|
71
|
-
async function executePlan(plan) {
|
|
135
|
+
async function runSingle(plan, command) {
|
|
72
136
|
const errors = (0, validate_1.validateSavedCommand)({
|
|
73
137
|
...plan.saved,
|
|
138
|
+
command,
|
|
74
139
|
directory: plan.cwd,
|
|
75
140
|
pathMode: 'saved',
|
|
76
141
|
}).filter((issue) => issue.level === 'error');
|
|
77
142
|
if (errors.length > 0) {
|
|
78
143
|
throw new Error(errors.map((e) => e.message).join('; '));
|
|
79
144
|
}
|
|
80
|
-
(0,
|
|
81
|
-
return (0, executor_1.executeCommand)(plan.saved.command, plan.cwd, plan.saved.env);
|
|
145
|
+
return (0, executor_1.executeCommand)(command, plan.cwd, plan.saved.env);
|
|
82
146
|
}
|
|
83
147
|
//# sourceMappingURL=runner.js.map
|
package/dist/core/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface Suggestion {
|
|
2
|
+
command: string;
|
|
3
|
+
count: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Find the command the user keeps typing but hasn't saved.
|
|
7
|
+
* Reads the raw log written by the shell hook (aliasmate init).
|
|
8
|
+
*/
|
|
9
|
+
export declare function getSuggestion(): Suggestion | null;
|
|
10
|
+
/** Drop a command from future suggestions (called after it gets saved). */
|
|
11
|
+
export declare function clearFromRawLog(command: string): void;
|
|
12
|
+
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/core/suggest.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAgBD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAkCjD;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CASrD"}
|
|
@@ -0,0 +1,109 @@
|
|
|
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.getSuggestion = getSuggestion;
|
|
37
|
+
exports.clearFromRawLog = clearFromRawLog;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const store_1 = require("./store");
|
|
41
|
+
const commands_1 = require("./commands");
|
|
42
|
+
const RAW_LOG = 'raw.log';
|
|
43
|
+
const SCAN_WINDOW = 300;
|
|
44
|
+
const ROTATE_AT = 2000;
|
|
45
|
+
const MIN_REPEATS = 3;
|
|
46
|
+
function rawLogPath() {
|
|
47
|
+
return path.join((0, store_1.getConfigDir)(), RAW_LOG);
|
|
48
|
+
}
|
|
49
|
+
function isSuggestible(cmd) {
|
|
50
|
+
return (cmd.length > 4 &&
|
|
51
|
+
cmd.length < 200 &&
|
|
52
|
+
!cmd.startsWith('aliasmate') &&
|
|
53
|
+
!cmd.startsWith('am ') &&
|
|
54
|
+
!/^(cd|ls|ll|la|pwd|clear|exit|history|man|which|cat|echo|top|htop)(\s|$)/.test(cmd));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Find the command the user keeps typing but hasn't saved.
|
|
58
|
+
* Reads the raw log written by the shell hook (aliasmate init).
|
|
59
|
+
*/
|
|
60
|
+
function getSuggestion() {
|
|
61
|
+
const file = rawLogPath();
|
|
62
|
+
if (!fs.existsSync(file))
|
|
63
|
+
return null;
|
|
64
|
+
let lines;
|
|
65
|
+
try {
|
|
66
|
+
lines = fs.readFileSync(file, 'utf8').split('\n');
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
// Keep the log from growing forever.
|
|
72
|
+
if (lines.length > ROTATE_AT) {
|
|
73
|
+
lines = lines.slice(-SCAN_WINDOW);
|
|
74
|
+
try {
|
|
75
|
+
fs.writeFileSync(file, lines.join('\n'), 'utf8');
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Best effort.
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const savedCommands = new Set(Object.values((0, commands_1.listCommands)()).map((c) => c.command));
|
|
82
|
+
const counts = new Map();
|
|
83
|
+
for (const raw of lines.slice(-SCAN_WINDOW)) {
|
|
84
|
+
const cmd = raw.trim();
|
|
85
|
+
if (!isSuggestible(cmd) || savedCommands.has(cmd))
|
|
86
|
+
continue;
|
|
87
|
+
counts.set(cmd, (counts.get(cmd) ?? 0) + 1);
|
|
88
|
+
}
|
|
89
|
+
let best = null;
|
|
90
|
+
for (const [command, count] of counts) {
|
|
91
|
+
if (count >= MIN_REPEATS && (!best || count > best.count))
|
|
92
|
+
best = { command, count };
|
|
93
|
+
}
|
|
94
|
+
return best;
|
|
95
|
+
}
|
|
96
|
+
/** Drop a command from future suggestions (called after it gets saved). */
|
|
97
|
+
function clearFromRawLog(command) {
|
|
98
|
+
const file = rawLogPath();
|
|
99
|
+
if (!fs.existsSync(file))
|
|
100
|
+
return;
|
|
101
|
+
try {
|
|
102
|
+
const lines = fs.readFileSync(file, 'utf8').split('\n');
|
|
103
|
+
fs.writeFileSync(file, lines.filter((l) => l.trim() !== command).join('\n'), 'utf8');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Best effort.
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=suggest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/core/suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/core/transfer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/core/transfer.ts"],"names":[],"mappings":"AASA,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAUnF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAAO,GACtD,YAAY,CA6Cd"}
|
package/dist/core/transfer.js
CHANGED
|
@@ -42,6 +42,7 @@ const path = __importStar(require("path"));
|
|
|
42
42
|
const commands_1 = require("./commands");
|
|
43
43
|
const env_1 = require("./env");
|
|
44
44
|
const store_1 = require("./store");
|
|
45
|
+
const undo_1 = require("./undo");
|
|
45
46
|
/** Expand a leading ~ and resolve to an absolute path. */
|
|
46
47
|
function expandPath(file) {
|
|
47
48
|
const expanded = file.startsWith('~') ? path.join(os.homedir(), file.slice(1)) : file;
|
|
@@ -82,6 +83,7 @@ function importFromFile(file, options = {}) {
|
|
|
82
83
|
throw new Error('Could not parse the import file (JSON expected)');
|
|
83
84
|
}
|
|
84
85
|
const result = { imported: 0, skipped: [], invalid: [] };
|
|
86
|
+
(0, undo_1.pushUndo)(`import ${path.basename(resolved)}`);
|
|
85
87
|
const existing = (0, commands_1.listCommands)();
|
|
86
88
|
if (Object.keys(existing).length > 0) {
|
|
87
89
|
result.backup = path.join((0, store_1.getConfigDir)(), `backup-${Date.now()}.json`);
|
|
@@ -102,7 +104,10 @@ function importFromFile(file, options = {}) {
|
|
|
102
104
|
directory: entry.directory,
|
|
103
105
|
pathMode: entry.pathMode,
|
|
104
106
|
env: entry.env,
|
|
105
|
-
|
|
107
|
+
description: entry.description,
|
|
108
|
+
tags: entry.tags,
|
|
109
|
+
steps: entry.steps,
|
|
110
|
+
}, { undo: false });
|
|
106
111
|
result.imported++;
|
|
107
112
|
}
|
|
108
113
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/core/transfer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/core/transfer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -6,6 +6,12 @@ export interface SavedCommand {
|
|
|
6
6
|
directory: string;
|
|
7
7
|
pathMode?: PathMode;
|
|
8
8
|
env?: Record<string, string>;
|
|
9
|
+
/** One-line human note: why/when to use this command. */
|
|
10
|
+
description?: string;
|
|
11
|
+
/** Free-form labels for filtering. */
|
|
12
|
+
tags?: string[];
|
|
13
|
+
/** Chain: names of saved commands to run sequentially (stops on failure). */
|
|
14
|
+
steps?: string[];
|
|
9
15
|
createdAt: string;
|
|
10
16
|
updatedAt: string;
|
|
11
17
|
}
|
|
@@ -15,6 +21,8 @@ export type AliasMap = Record<string, string>;
|
|
|
15
21
|
export interface ExecutionEntry {
|
|
16
22
|
commandName: string;
|
|
17
23
|
executedAt: string;
|
|
24
|
+
exitCode?: number;
|
|
25
|
+
durationMs?: number;
|
|
18
26
|
}
|
|
19
27
|
export interface ValidationIssue {
|
|
20
28
|
level: 'error' | 'warning';
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,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,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEtD,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,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,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEtD,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Snapshot the current commands before a destructive mutation. */
|
|
2
|
+
export declare function pushUndo(label: string): void;
|
|
3
|
+
/** Restore the most recent snapshot. Returns its label, or null if empty. */
|
|
4
|
+
export declare function undoLast(): string | null;
|
|
5
|
+
/** Peek at what undo would revert. */
|
|
6
|
+
export declare function peekUndo(): string | null;
|
|
7
|
+
//# sourceMappingURL=undo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/core/undo.ts"],"names":[],"mappings":"AAYA,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ5C;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAOxC;AAED,sCAAsC;AACtC,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGxC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pushUndo = pushUndo;
|
|
4
|
+
exports.undoLast = undoLast;
|
|
5
|
+
exports.peekUndo = peekUndo;
|
|
6
|
+
const store_1 = require("./store");
|
|
7
|
+
const UNDO_KEY = 'undo_stack';
|
|
8
|
+
const MAX_UNDO = 10;
|
|
9
|
+
/** Snapshot the current commands before a destructive mutation. */
|
|
10
|
+
function pushUndo(label) {
|
|
11
|
+
const stack = (0, store_1.getMetadata)(UNDO_KEY) ?? [];
|
|
12
|
+
stack.unshift({
|
|
13
|
+
label,
|
|
14
|
+
at: new Date().toISOString(),
|
|
15
|
+
commands: JSON.parse(JSON.stringify(store_1.configFile.read())),
|
|
16
|
+
});
|
|
17
|
+
(0, store_1.setMetadata)(UNDO_KEY, stack.slice(0, MAX_UNDO));
|
|
18
|
+
}
|
|
19
|
+
/** Restore the most recent snapshot. Returns its label, or null if empty. */
|
|
20
|
+
function undoLast() {
|
|
21
|
+
const stack = (0, store_1.getMetadata)(UNDO_KEY) ?? [];
|
|
22
|
+
const entry = stack.shift();
|
|
23
|
+
if (!entry)
|
|
24
|
+
return null;
|
|
25
|
+
store_1.configFile.write(entry.commands);
|
|
26
|
+
(0, store_1.setMetadata)(UNDO_KEY, stack);
|
|
27
|
+
return entry.label;
|
|
28
|
+
}
|
|
29
|
+
/** Peek at what undo would revert. */
|
|
30
|
+
function peekUndo() {
|
|
31
|
+
const stack = (0, store_1.getMetadata)(UNDO_KEY) ?? [];
|
|
32
|
+
return stack[0]?.label ?? null;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=undo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/core/undo.ts"],"names":[],"mappings":";;AAaA,4BAQC;AAGD,4BAOC;AAGD,4BAGC;AArCD,mCAA+D;AAG/D,MAAM,QAAQ,GAAG,YAAY,CAAC;AAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC;AAQpB,mEAAmE;AACnE,SAAgB,QAAQ,CAAC,KAAa;IACpC,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAc,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvD,KAAK,CAAC,OAAO,CAAC;QACZ,KAAK;QACL,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,IAAI,EAAE,CAAC,CAAe;KACtE,CAAC,CAAC;IACH,IAAA,mBAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,6EAA6E;AAC7E,SAAgB,QAAQ;IACtB,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAc,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,kBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAA,mBAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,sCAAsC;AACtC,SAAgB,QAAQ;IACtB,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAc,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;AACjC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -61,10 +61,41 @@ program
|
|
|
61
61
|
.version(APP_VERSION);
|
|
62
62
|
program
|
|
63
63
|
.command('run <name> [path]')
|
|
64
|
-
.description('Run a saved command (name, alias, or @N
|
|
64
|
+
.description('Run a saved command (name, alias, or @N; append args after --)')
|
|
65
65
|
.option('--dry-run', 'Preview what would execute without running it')
|
|
66
66
|
.option('--verbose', 'Show full details in dry-run output')
|
|
67
|
-
.action((name, pathOverride, options) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/run')))).runHandler(name, pathOverride,
|
|
67
|
+
.action((name, pathOverride, options) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/run')))).runHandler(name, pathOverride, {
|
|
68
|
+
...options,
|
|
69
|
+
extraArgs: passthroughArgs,
|
|
70
|
+
})));
|
|
71
|
+
program
|
|
72
|
+
.command('copy <name>')
|
|
73
|
+
.description('Copy a saved command to the clipboard')
|
|
74
|
+
.action((name) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/extras')))).copyHandler(name)));
|
|
75
|
+
program
|
|
76
|
+
.command('undo')
|
|
77
|
+
.description('Revert the last save/edit/rename/delete/import')
|
|
78
|
+
.action(() => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/extras')))).undoHandler()));
|
|
79
|
+
program
|
|
80
|
+
.command('chain <name> <steps...>')
|
|
81
|
+
.description('Save a chain that runs saved commands in sequence (stops on failure)')
|
|
82
|
+
.action((name, steps) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/extras')))).chainHandler(name, steps)));
|
|
83
|
+
program
|
|
84
|
+
.command('tag <name> [tags...]')
|
|
85
|
+
.description('Set tags on a command (no tags: show, "-" clears)')
|
|
86
|
+
.action((name, tags) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/extras')))).tagHandler(name, tags)));
|
|
87
|
+
program
|
|
88
|
+
.command('init [shell]')
|
|
89
|
+
.description('Print the shell hook for reliable capture (bash, zsh, fish) — or "install" it')
|
|
90
|
+
.action((shell) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/init')))).initHandler(shell)));
|
|
91
|
+
program
|
|
92
|
+
.command('project [action] [name]')
|
|
93
|
+
.description('Project commands in .aliasmate.json: status | init | add <name> | remove <name>')
|
|
94
|
+
.action((action, name) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/project')))).projectHandler(action, name)));
|
|
95
|
+
program
|
|
96
|
+
.command('sync <direction> [id]')
|
|
97
|
+
.description('Sync commands via a private GitHub gist: push | pull | set <gist-id> (needs gh CLI)')
|
|
98
|
+
.action((direction, id) => wrap(async () => (await Promise.resolve().then(() => __importStar(require('./cli/sync')))).syncHandler(direction, id)));
|
|
68
99
|
program
|
|
69
100
|
.command('save')
|
|
70
101
|
.description('Open the TUI with a blank new-command form')
|
|
@@ -152,7 +183,11 @@ program
|
|
|
152
183
|
console.log(`Saved commands: ${Object.keys(listCommands()).length}`);
|
|
153
184
|
}));
|
|
154
185
|
program.showSuggestionAfterError(true);
|
|
155
|
-
|
|
186
|
+
// Everything after a bare -- is passed through to `run` verbatim.
|
|
187
|
+
const ddIndex = process.argv.indexOf('--');
|
|
188
|
+
const passthroughArgs = ddIndex >= 0 ? process.argv.slice(ddIndex + 1) : [];
|
|
189
|
+
const argv = ddIndex >= 0 ? process.argv.slice(0, ddIndex) : process.argv;
|
|
190
|
+
const args = argv.slice(2);
|
|
156
191
|
if (args.length === 0) {
|
|
157
192
|
// Zero-args: interactive home screen (with first-run welcome).
|
|
158
193
|
wrap(async () => {
|
|
@@ -167,6 +202,6 @@ if (args.length === 0) {
|
|
|
167
202
|
});
|
|
168
203
|
}
|
|
169
204
|
else {
|
|
170
|
-
program.parse(
|
|
205
|
+
program.parse(argv);
|
|
171
206
|
}
|
|
172
207
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAoC;AAEpC,uEAAuE;AACvE,8DAA8D;AAC9D,MAAM,WAAW,GAAY,OAAO,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAExF;;;;GAIG;AACH,SAAS,IAAI,CAAC,EAA8B;IAC1C,OAAO,CAAC,OAAO,EAAE;SACd,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;QACtB,qDAAqD;QACrD,IAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,WAAW,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/format.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export declare function toCompact(commands: CommandMap): string;
|
|
|
8
8
|
export interface TableOptions {
|
|
9
9
|
runCounts?: Map<string, number>;
|
|
10
10
|
lastRuns?: Map<string, string>;
|
|
11
|
+
/** Names sourced from the project file (marked in the table). */
|
|
12
|
+
projectNames?: Set<string>;
|
|
11
13
|
}
|
|
12
14
|
/** Shorten a path for display: home becomes ~. */
|
|
13
15
|
export declare function prettyPath(dir: string): string;
|
package/dist/ui/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKrE,2CAA2C;AAC3C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAcnE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,UAAO,GAAG,MAAM,CAEhE;AAMD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,UAAO,GAAG,MAAM,CAgBhE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAItD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKrE,2CAA2C;AAC3C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAcnE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,UAAO,GAAG,MAAM,CAEhE;AAMD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,UAAO,GAAG,MAAM,CAgBhE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAItD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,iEAAiE;IACjE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,gDAAgD;AAChD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAoChF;AAED,wBAAgB,MAAM,CACpB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,YAAiB,GACzB,MAAM,CAWR;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAEjE"}
|