aliasmate 1.6.2 → 2.0.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.
Files changed (203) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +61 -894
  3. package/dist/cli/completion.d.ts +5 -0
  4. package/dist/cli/completion.d.ts.map +1 -0
  5. package/dist/cli/completion.js +144 -0
  6. package/dist/cli/completion.js.map +1 -0
  7. package/dist/cli/manage.d.ts +20 -0
  8. package/dist/cli/manage.d.ts.map +1 -0
  9. package/dist/cli/manage.js +213 -0
  10. package/dist/cli/manage.js.map +1 -0
  11. package/dist/cli/run.d.ts +6 -0
  12. package/dist/cli/run.d.ts.map +1 -0
  13. package/dist/cli/run.js +46 -0
  14. package/dist/cli/run.js.map +1 -0
  15. package/dist/cli/save.d.ts +9 -0
  16. package/dist/cli/save.d.ts.map +1 -0
  17. package/dist/cli/save.js +52 -0
  18. package/dist/cli/save.js.map +1 -0
  19. package/dist/cli/transfer.d.ts +5 -0
  20. package/dist/cli/transfer.d.ts.map +1 -0
  21. package/dist/cli/transfer.js +118 -0
  22. package/dist/cli/transfer.js.map +1 -0
  23. package/dist/core/commands.d.ts +27 -0
  24. package/dist/core/commands.d.ts.map +1 -0
  25. package/dist/core/commands.js +194 -0
  26. package/dist/core/commands.js.map +1 -0
  27. package/dist/core/env.d.ts +9 -0
  28. package/dist/core/env.d.ts.map +1 -0
  29. package/dist/core/env.js +45 -0
  30. package/dist/core/env.js.map +1 -0
  31. package/dist/core/executor.d.ts +7 -0
  32. package/dist/core/executor.d.ts.map +1 -0
  33. package/dist/{utils → core}/executor.js +10 -46
  34. package/dist/core/executor.js.map +1 -0
  35. package/dist/core/history.d.ts +11 -0
  36. package/dist/core/history.d.ts.map +1 -0
  37. package/dist/core/history.js +117 -0
  38. package/dist/core/history.js.map +1 -0
  39. package/dist/core/recent.d.ts +14 -0
  40. package/dist/core/recent.d.ts.map +1 -0
  41. package/dist/core/recent.js +54 -0
  42. package/dist/core/recent.js.map +1 -0
  43. package/dist/core/runner.d.ts +13 -0
  44. package/dist/core/runner.d.ts.map +1 -0
  45. package/dist/core/runner.js +83 -0
  46. package/dist/core/runner.js.map +1 -0
  47. package/dist/core/store.d.ts +29 -0
  48. package/dist/core/store.d.ts.map +1 -0
  49. package/dist/core/store.js +131 -0
  50. package/dist/core/store.js.map +1 -0
  51. package/dist/core/types.d.ts +29 -0
  52. package/dist/core/types.d.ts.map +1 -0
  53. package/dist/core/types.js +3 -0
  54. package/dist/core/types.js.map +1 -0
  55. package/dist/core/validate.d.ts +6 -0
  56. package/dist/core/validate.d.ts.map +1 -0
  57. package/dist/core/validate.js +139 -0
  58. package/dist/core/validate.js.map +1 -0
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +169 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/ui/format.d.ts +16 -0
  64. package/dist/ui/format.d.ts.map +1 -0
  65. package/dist/ui/format.js +112 -0
  66. package/dist/ui/format.js.map +1 -0
  67. package/dist/ui/interactive.d.ts +6 -0
  68. package/dist/ui/interactive.d.ts.map +1 -0
  69. package/dist/ui/interactive.js +147 -0
  70. package/dist/ui/interactive.js.map +1 -0
  71. package/dist/ui/onboarding.d.ts +3 -0
  72. package/dist/ui/onboarding.d.ts.map +1 -0
  73. package/dist/ui/onboarding.js +82 -0
  74. package/dist/ui/onboarding.js.map +1 -0
  75. package/dist/ui/prompts.d.ts +14 -0
  76. package/dist/ui/prompts.d.ts.map +1 -0
  77. package/dist/ui/prompts.js +96 -0
  78. package/dist/ui/prompts.js.map +1 -0
  79. package/dist/ui/theme.d.ts +28 -0
  80. package/dist/ui/theme.d.ts.map +1 -0
  81. package/dist/ui/theme.js +43 -0
  82. package/dist/ui/theme.js.map +1 -0
  83. package/package.json +4 -5
  84. package/dist/cli.d.ts +0 -3
  85. package/dist/cli.d.ts.map +0 -1
  86. package/dist/cli.js +0 -253
  87. package/dist/cli.js.map +0 -1
  88. package/dist/commands/alias.d.ts +0 -30
  89. package/dist/commands/alias.d.ts.map +0 -1
  90. package/dist/commands/alias.js +0 -213
  91. package/dist/commands/alias.js.map +0 -1
  92. package/dist/commands/changelog.d.ts +0 -9
  93. package/dist/commands/changelog.d.ts.map +0 -1
  94. package/dist/commands/changelog.js +0 -72
  95. package/dist/commands/changelog.js.map +0 -1
  96. package/dist/commands/completion.d.ts +0 -31
  97. package/dist/commands/completion.d.ts.map +0 -1
  98. package/dist/commands/completion.js +0 -522
  99. package/dist/commands/completion.js.map +0 -1
  100. package/dist/commands/delete.d.ts +0 -14
  101. package/dist/commands/delete.d.ts.map +0 -1
  102. package/dist/commands/delete.js +0 -54
  103. package/dist/commands/delete.js.map +0 -1
  104. package/dist/commands/edit.d.ts +0 -16
  105. package/dist/commands/edit.d.ts.map +0 -1
  106. package/dist/commands/edit.js +0 -231
  107. package/dist/commands/edit.js.map +0 -1
  108. package/dist/commands/export.d.ts +0 -23
  109. package/dist/commands/export.d.ts.map +0 -1
  110. package/dist/commands/export.js +0 -122
  111. package/dist/commands/export.js.map +0 -1
  112. package/dist/commands/import.d.ts +0 -23
  113. package/dist/commands/import.d.ts.map +0 -1
  114. package/dist/commands/import.js +0 -235
  115. package/dist/commands/import.js.map +0 -1
  116. package/dist/commands/list.d.ts +0 -25
  117. package/dist/commands/list.d.ts.map +0 -1
  118. package/dist/commands/list.js +0 -58
  119. package/dist/commands/list.js.map +0 -1
  120. package/dist/commands/prev.d.ts +0 -15
  121. package/dist/commands/prev.d.ts.map +0 -1
  122. package/dist/commands/prev.js +0 -138
  123. package/dist/commands/prev.js.map +0 -1
  124. package/dist/commands/recent.d.ts +0 -24
  125. package/dist/commands/recent.d.ts.map +0 -1
  126. package/dist/commands/recent.js +0 -132
  127. package/dist/commands/recent.js.map +0 -1
  128. package/dist/commands/run.d.ts +0 -22
  129. package/dist/commands/run.d.ts.map +0 -1
  130. package/dist/commands/run.js +0 -217
  131. package/dist/commands/run.js.map +0 -1
  132. package/dist/commands/save.d.ts +0 -17
  133. package/dist/commands/save.d.ts.map +0 -1
  134. package/dist/commands/save.js +0 -232
  135. package/dist/commands/save.js.map +0 -1
  136. package/dist/commands/search.d.ts +0 -19
  137. package/dist/commands/search.d.ts.map +0 -1
  138. package/dist/commands/search.js +0 -113
  139. package/dist/commands/search.js.map +0 -1
  140. package/dist/commands/validate.d.ts +0 -10
  141. package/dist/commands/validate.d.ts.map +0 -1
  142. package/dist/commands/validate.js +0 -162
  143. package/dist/commands/validate.js.map +0 -1
  144. package/dist/storage/index.d.ts +0 -117
  145. package/dist/storage/index.d.ts.map +0 -1
  146. package/dist/storage/index.js +0 -262
  147. package/dist/storage/index.js.map +0 -1
  148. package/dist/utils/changelog.d.ts +0 -41
  149. package/dist/utils/changelog.d.ts.map +0 -1
  150. package/dist/utils/changelog.js +0 -192
  151. package/dist/utils/changelog.js.map +0 -1
  152. package/dist/utils/constants.d.ts +0 -48
  153. package/dist/utils/constants.d.ts.map +0 -1
  154. package/dist/utils/constants.js +0 -51
  155. package/dist/utils/constants.js.map +0 -1
  156. package/dist/utils/env.d.ts +0 -64
  157. package/dist/utils/env.d.ts.map +0 -1
  158. package/dist/utils/env.js +0 -199
  159. package/dist/utils/env.js.map +0 -1
  160. package/dist/utils/errors.d.ts +0 -30
  161. package/dist/utils/errors.d.ts.map +0 -1
  162. package/dist/utils/errors.js +0 -62
  163. package/dist/utils/errors.js.map +0 -1
  164. package/dist/utils/executor.d.ts +0 -33
  165. package/dist/utils/executor.d.ts.map +0 -1
  166. package/dist/utils/executor.js.map +0 -1
  167. package/dist/utils/formatters.d.ts +0 -30
  168. package/dist/utils/formatters.d.ts.map +0 -1
  169. package/dist/utils/formatters.js +0 -188
  170. package/dist/utils/formatters.js.map +0 -1
  171. package/dist/utils/history.d.ts +0 -37
  172. package/dist/utils/history.d.ts.map +0 -1
  173. package/dist/utils/history.js +0 -179
  174. package/dist/utils/history.js.map +0 -1
  175. package/dist/utils/llm-generator.d.ts +0 -21
  176. package/dist/utils/llm-generator.d.ts.map +0 -1
  177. package/dist/utils/llm-generator.js +0 -915
  178. package/dist/utils/llm-generator.js.map +0 -1
  179. package/dist/utils/onboarding.d.ts +0 -10
  180. package/dist/utils/onboarding.d.ts.map +0 -1
  181. package/dist/utils/onboarding.js +0 -316
  182. package/dist/utils/onboarding.js.map +0 -1
  183. package/dist/utils/paths.d.ts +0 -44
  184. package/dist/utils/paths.d.ts.map +0 -1
  185. package/dist/utils/paths.js +0 -115
  186. package/dist/utils/paths.js.map +0 -1
  187. package/dist/utils/prompts.d.ts +0 -66
  188. package/dist/utils/prompts.d.ts.map +0 -1
  189. package/dist/utils/prompts.js +0 -51
  190. package/dist/utils/prompts.js.map +0 -1
  191. package/dist/utils/recent.d.ts +0 -55
  192. package/dist/utils/recent.d.ts.map +0 -1
  193. package/dist/utils/recent.js +0 -102
  194. package/dist/utils/recent.js.map +0 -1
  195. package/dist/utils/validator.d.ts +0 -56
  196. package/dist/utils/validator.d.ts.map +0 -1
  197. package/dist/utils/validator.js +0 -413
  198. package/dist/utils/validator.js.map +0 -1
  199. package/dist/utils/version-checker.d.ts +0 -29
  200. package/dist/utils/version-checker.d.ts.map +0 -1
  201. package/dist/utils/version-checker.js +0 -191
  202. package/dist/utils/version-checker.js.map +0 -1
  203. package/whats-new.json +0 -217
@@ -1,231 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.editCommand = editCommand;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const storage_1 = require("../storage");
9
- const errors_1 = require("../utils/errors");
10
- const constants_1 = require("../utils/constants");
11
- const prompts_1 = require("../utils/prompts");
12
- const env_1 = require("../utils/env");
13
- const validator_1 = require("../utils/validator");
14
- /**
15
- * Edit an existing command interactively
16
- *
17
- * @param name - The name of the command to edit
18
- * @param shouldValidate - Whether to validate the command (defaults to true)
19
- *
20
- * @example
21
- * ```
22
- * // User is prompted to update:
23
- * // - Command (pre-filled with current value)
24
- * // - Working directory (pre-filled with current value)
25
- * await editCommand('build-prod');
26
- * ```
27
- */
28
- async function editCommand(name, shouldValidate = true) {
29
- try {
30
- // Get the existing alias
31
- const alias = (0, storage_1.getAlias)(name);
32
- if (!alias) {
33
- console.error(chalk_1.default.red(`Error: ${constants_1.ERROR_MESSAGES.commandNotFound(name)}`));
34
- console.log(chalk_1.default.yellow(constants_1.HELP_MESSAGES.useList));
35
- process.exit(errors_1.ExitCode.InvalidInput);
36
- }
37
- console.log(chalk_1.default.blue(`Editing command: ${name}\n`));
38
- // Prompt for new values including path mode
39
- const prompts = [
40
- {
41
- type: 'input',
42
- name: 'command',
43
- message: 'Command:',
44
- default: alias.command,
45
- validate: (input) => {
46
- const trimmed = input.trim();
47
- if (!trimmed) {
48
- return constants_1.HELP_MESSAGES.emptyValue('Command');
49
- }
50
- return true;
51
- },
52
- },
53
- {
54
- type: 'input',
55
- name: 'directory',
56
- message: 'Working directory:',
57
- default: alias.directory,
58
- validate: (input) => {
59
- const trimmed = input.trim();
60
- if (!trimmed) {
61
- return constants_1.HELP_MESSAGES.emptyValue('Directory');
62
- }
63
- return true;
64
- },
65
- },
66
- {
67
- type: 'list',
68
- name: 'pathMode',
69
- message: 'Path mode:',
70
- choices: [
71
- {
72
- name: 'Saved Directory (always run in the directory above)',
73
- value: 'saved',
74
- },
75
- {
76
- name: 'Current Directory (run in your current working directory)',
77
- value: 'current',
78
- },
79
- ],
80
- },
81
- ];
82
- const answers = await (0, prompts_1.promptMultiple)(prompts);
83
- // Ask if user wants to update environment variables
84
- const updateEnvPrompt = {
85
- type: 'confirm',
86
- name: 'updateEnv',
87
- message: 'Update environment variables?',
88
- default: false,
89
- };
90
- const shouldUpdateEnv = await (0, prompts_1.promptConfirm)(updateEnvPrompt);
91
- let selectedEnv = alias.env;
92
- if (shouldUpdateEnv) {
93
- // Merge current env with saved env for the selection UI
94
- const currentEnv = (0, env_1.getUserEnvVars)();
95
- const savedEnv = alias.env || {};
96
- // Combine all available env vars
97
- const allEnv = { ...currentEnv, ...savedEnv };
98
- const { sensitive, safe } = (0, env_1.categorizeEnvVars)(allEnv);
99
- if (Object.keys(allEnv).length === 0) {
100
- console.log(chalk_1.default.yellow('No user-defined environment variables found.'));
101
- selectedEnv = undefined;
102
- }
103
- else {
104
- // Show warning if there are sensitive vars
105
- if (Object.keys(sensitive).length > 0) {
106
- console.log(chalk_1.default.yellow('\n⚠️ Warning: Some environment variables appear to contain sensitive data:'));
107
- Object.keys(sensitive).forEach((key) => {
108
- console.log(chalk_1.default.yellow(` - ${key}`));
109
- });
110
- console.log(chalk_1.default.gray('(These may contain API keys, tokens, or passwords)\n'));
111
- }
112
- // Let user select which vars to save
113
- const envChoices = [
114
- ...Object.keys(safe).map((key) => ({
115
- name: (0, env_1.formatEnvVars)({ [key]: allEnv[key] })[0],
116
- value: key,
117
- checked: key in savedEnv, // Check if already saved
118
- })),
119
- ...Object.keys(sensitive).map((key) => ({
120
- name: `${(0, env_1.formatEnvVars)({ [key]: allEnv[key] })[0]} ${chalk_1.default.yellow('(sensitive)')}`,
121
- value: key,
122
- checked: key in savedEnv, // Check if already saved
123
- })),
124
- ];
125
- if (envChoices.length > 0) {
126
- const checkboxPrompt = {
127
- type: 'checkbox',
128
- name: 'envVars',
129
- message: 'Select environment variables to save (use space to toggle):',
130
- choices: envChoices,
131
- };
132
- const selectedVars = await (0, prompts_1.promptMultiple)([checkboxPrompt]);
133
- // Build the selected env object
134
- const newEnv = {};
135
- for (const varName of selectedVars.envVars) {
136
- newEnv[varName] = allEnv[varName];
137
- }
138
- selectedEnv = Object.keys(newEnv).length > 0 ? newEnv : undefined;
139
- if (selectedEnv) {
140
- console.log(chalk_1.default.green(`\n✓ ${Object.keys(selectedEnv).length} environment variable(s) will be saved`));
141
- }
142
- else {
143
- console.log(chalk_1.default.yellow('\n✓ All environment variables cleared'));
144
- }
145
- }
146
- }
147
- }
148
- // Check if anything changed
149
- const currentPathMode = alias.pathMode || 'saved'; // Default to 'saved' for backward compatibility
150
- const envChanged = JSON.stringify(selectedEnv || {}) !== JSON.stringify(alias.env || {});
151
- if (answers.command === alias.command &&
152
- answers.directory === alias.directory &&
153
- answers.pathMode === currentPathMode &&
154
- !envChanged) {
155
- console.log(chalk_1.default.yellow('No changes made'));
156
- return;
157
- }
158
- // Validate the command if requested
159
- if (shouldValidate) {
160
- console.log(chalk_1.default.blue('\nValidating command...'));
161
- const report = (0, validator_1.validateCommandAlias)(answers.command, answers.directory, selectedEnv);
162
- if (report.issues.length > 0) {
163
- const errors = report.issues.filter((issue) => issue.type === 'error');
164
- const warnings = report.issues.filter((issue) => issue.type === 'warning');
165
- if (errors.length > 0) {
166
- console.log(chalk_1.default.red(`\n✗ Validation failed with ${errors.length} error(s):\n`));
167
- for (const error of errors) {
168
- console.log(chalk_1.default.red(` [${error.field}] ${error.message}`));
169
- }
170
- console.log();
171
- console.log(chalk_1.default.yellow('Use --no-validate flag to skip validation'));
172
- process.exit(errors_1.ExitCode.InvalidInput);
173
- }
174
- if (warnings.length > 0) {
175
- console.log(chalk_1.default.yellow(`\n⚠ ${warnings.length} warning(s):\n`));
176
- for (const warning of warnings) {
177
- console.log(chalk_1.default.yellow(` [${warning.field}] ${warning.message}`));
178
- }
179
- const continuePrompt = {
180
- type: 'confirm',
181
- name: 'continue',
182
- message: 'Continue saving despite warnings?',
183
- default: true,
184
- };
185
- const shouldContinue = await (0, prompts_1.promptConfirm)(continuePrompt);
186
- if (!shouldContinue) {
187
- console.log(chalk_1.default.yellow('Edit cancelled'));
188
- return;
189
- }
190
- }
191
- else {
192
- console.log(chalk_1.default.green('✓ Validation passed'));
193
- }
194
- }
195
- else {
196
- console.log(chalk_1.default.green('✓ Validation passed'));
197
- }
198
- }
199
- // Update the alias with path mode and env vars
200
- try {
201
- const success = (0, storage_1.setAlias)(name, answers.command, answers.directory, answers.pathMode, selectedEnv);
202
- if (success) {
203
- console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.updated(name)}`));
204
- console.log(chalk_1.default.gray(` Command: ${answers.command}`));
205
- console.log(chalk_1.default.gray(` Directory: ${answers.directory}`));
206
- console.log(chalk_1.default.gray(` Path Mode: ${answers.pathMode}`));
207
- if (selectedEnv && Object.keys(selectedEnv).length > 0) {
208
- console.log(chalk_1.default.gray(` Environment Variables: ${Object.keys(selectedEnv).length} saved`));
209
- }
210
- else {
211
- console.log(chalk_1.default.gray(` Environment Variables: none`));
212
- }
213
- }
214
- else {
215
- (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.couldNotUpdate);
216
- }
217
- }
218
- catch (error) {
219
- (0, errors_1.exitWithError)(`${constants_1.ERROR_MESSAGES.couldNotUpdate}: ${error.message}`);
220
- }
221
- }
222
- catch (error) {
223
- if ((0, errors_1.isInquirerTTYError)(error)) {
224
- (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.interactiveNotSupported, errors_1.ExitCode.GeneralError);
225
- }
226
- else {
227
- (0, errors_1.handleError)(error, 'Failed to edit command');
228
- }
229
- }
230
- }
231
- //# sourceMappingURL=edit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Export all saved commands to a file
3
- *
4
- * Creates a portable backup of all commands with metadata, suitable for:
5
- * - Sharing with team members
6
- * - Backing up your command library
7
- * - Migrating between machines
8
- *
9
- * @param filePath - The path where the export file should be created
10
- * @param format - Output format: 'json' (default) or 'yaml'
11
- *
12
- * @example
13
- * ```
14
- * // Export to JSON file
15
- * exportCommand('./my-commands.json');
16
- * // Output: ✓ Exported 15 command(s) to /path/to/my-commands.json
17
- *
18
- * // Export to YAML file
19
- * exportCommand('./my-commands.yaml', 'yaml');
20
- * ```
21
- */
22
- export declare function exportCommand(filePath: string, format?: 'json' | 'yaml'): void;
23
- //# sourceMappingURL=export.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,MAAe,GAAG,IAAI,CAiEtF"}
@@ -1,122 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.exportCommand = exportCommand;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const chalk_1 = __importDefault(require("chalk"));
43
- const storage_1 = require("../storage");
44
- const errors_1 = require("../utils/errors");
45
- const constants_1 = require("../utils/constants");
46
- const formatters_1 = require("../utils/formatters");
47
- /**
48
- * Export all saved commands to a file
49
- *
50
- * Creates a portable backup of all commands with metadata, suitable for:
51
- * - Sharing with team members
52
- * - Backing up your command library
53
- * - Migrating between machines
54
- *
55
- * @param filePath - The path where the export file should be created
56
- * @param format - Output format: 'json' (default) or 'yaml'
57
- *
58
- * @example
59
- * ```
60
- * // Export to JSON file
61
- * exportCommand('./my-commands.json');
62
- * // Output: ✓ Exported 15 command(s) to /path/to/my-commands.json
63
- *
64
- * // Export to YAML file
65
- * exportCommand('./my-commands.yaml', 'yaml');
66
- * ```
67
- */
68
- function exportCommand(filePath, format = 'json') {
69
- try {
70
- // Validate file path
71
- if (!filePath || !filePath.trim()) {
72
- (0, errors_1.exitWithError)('File path cannot be empty', errors_1.ExitCode.InvalidInput);
73
- }
74
- const aliases = (0, storage_1.loadAliases)();
75
- const names = Object.keys(aliases);
76
- if (names.length === 0) {
77
- console.log(chalk_1.default.yellow(constants_1.HELP_MESSAGES.noCommands));
78
- return;
79
- }
80
- // Resolve the file path
81
- const resolvedPath = path.resolve(filePath);
82
- // Check if file already exists and warn user
83
- if (fs.existsSync(resolvedPath)) {
84
- console.log(chalk_1.default.yellow(`Warning: File already exists and will be overwritten: ${resolvedPath}`));
85
- }
86
- // Ensure directory exists
87
- const dirPath = path.dirname(resolvedPath);
88
- if (!fs.existsSync(dirPath)) {
89
- try {
90
- fs.mkdirSync(dirPath, { recursive: true });
91
- }
92
- catch (mkdirError) {
93
- (0, errors_1.exitWithError)(`Could not create directory: ${mkdirError.message}`, errors_1.ExitCode.PermissionDenied);
94
- }
95
- }
96
- // Export in the specified format
97
- let content;
98
- if (format === 'yaml') {
99
- content = (0, formatters_1.formatAsYAML)(aliases);
100
- }
101
- else {
102
- // JSON format with metadata
103
- const exportData = {
104
- exportedAt: new Date().toISOString(),
105
- version: '1.0',
106
- aliases: aliases,
107
- };
108
- content = JSON.stringify(exportData, null, 2);
109
- }
110
- try {
111
- fs.writeFileSync(resolvedPath, content, 'utf8');
112
- console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.exported(names.length, resolvedPath)}`));
113
- }
114
- catch (writeError) {
115
- (0, errors_1.exitWithError)(`${constants_1.ERROR_MESSAGES.couldNotWrite}: ${writeError.message}`, errors_1.ExitCode.PermissionDenied);
116
- }
117
- }
118
- catch (error) {
119
- (0, errors_1.handleError)(error, 'Failed to export commands');
120
- }
121
- }
122
- //# sourceMappingURL=export.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,sCAiEC;AA9FD,uCAAyB;AACzB,2CAA6B;AAC7B,kDAA0B;AAC1B,wCAAyC;AACzC,4CAAuE;AACvE,kDAAqF;AACrF,oDAAmD;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE,SAA0B,MAAM;IAC9E,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,IAAA,sBAAa,EAAC,2BAA2B,EAAE,iBAAQ,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yBAAa,CAAC,UAAU,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,6CAA6C;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,yDAAyD,YAAY,EAAE,CAAC,CACtF,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAA,sBAAa,EACX,+BAAgC,UAAoB,CAAC,OAAO,EAAE,EAC9D,iBAAQ,CAAC,gBAAgB,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAe,CAAC;QAEpB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,GAAG,IAAA,yBAAY,EAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,MAAM,UAAU,GAAG;gBACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,OAAO;aACjB,CAAC;YACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,4BAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAA,sBAAa,EACX,GAAG,0BAAc,CAAC,aAAa,KAAM,UAAoB,CAAC,OAAO,EAAE,EACnE,iBAAQ,CAAC,gBAAgB,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,oBAAW,EAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Import commands from a JSON file
3
- *
4
- * Handles conflicts intelligently by prompting the user for each conflict:
5
- * - Overwrite: Replace existing command with imported one
6
- * - Skip: Keep existing command, discard imported one
7
- * - Rename: Save imported command with a different name
8
- *
9
- * @param filePath - The path to the JSON file to import from
10
- *
11
- * @example
12
- * ```
13
- * // Import commands from a file
14
- * await importCommand('./team-commands.json');
15
- *
16
- * // If conflicts are found, user is prompted:
17
- * // - Overwrite existing
18
- * // - Skip this command
19
- * // - Rename imported command
20
- * ```
21
- */
22
- export declare function importCommand(filePath: string): Promise<void>;
23
- //# sourceMappingURL=import.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuLnE"}
@@ -1,235 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.importCommand = importCommand;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const chalk_1 = __importDefault(require("chalk"));
43
- const storage_1 = require("../storage");
44
- const errors_1 = require("../utils/errors");
45
- const constants_1 = require("../utils/constants");
46
- const prompts_1 = require("../utils/prompts");
47
- /**
48
- * Import commands from a JSON file
49
- *
50
- * Handles conflicts intelligently by prompting the user for each conflict:
51
- * - Overwrite: Replace existing command with imported one
52
- * - Skip: Keep existing command, discard imported one
53
- * - Rename: Save imported command with a different name
54
- *
55
- * @param filePath - The path to the JSON file to import from
56
- *
57
- * @example
58
- * ```
59
- * // Import commands from a file
60
- * await importCommand('./team-commands.json');
61
- *
62
- * // If conflicts are found, user is prompted:
63
- * // - Overwrite existing
64
- * // - Skip this command
65
- * // - Rename imported command
66
- * ```
67
- */
68
- async function importCommand(filePath) {
69
- try {
70
- // Resolve the file path
71
- const resolvedPath = path.resolve(filePath);
72
- // Check if file exists
73
- if (!fs.existsSync(resolvedPath)) {
74
- (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.fileNotFound(resolvedPath), errors_1.ExitCode.FileNotFound);
75
- }
76
- // Read and parse the file
77
- let importData;
78
- try {
79
- const fileContent = fs.readFileSync(resolvedPath, 'utf8');
80
- importData = JSON.parse(fileContent);
81
- }
82
- catch (parseError) {
83
- console.error(chalk_1.default.red(`Error: ${constants_1.ERROR_MESSAGES.invalidJson}`));
84
- console.error(parseError.message);
85
- process.exit(errors_1.ExitCode.InvalidInput);
86
- }
87
- // Validate the import data structure
88
- if (!importData.aliases || typeof importData.aliases !== 'object') {
89
- (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.invalidFormat, errors_1.ExitCode.InvalidInput);
90
- }
91
- const importAliases = importData.aliases;
92
- const importNames = Object.keys(importAliases);
93
- // Validate each alias structure
94
- for (const name of importNames) {
95
- const alias = importAliases[name];
96
- if (!alias ||
97
- typeof alias !== 'object' ||
98
- typeof alias.command !== 'string' ||
99
- typeof alias.directory !== 'string' ||
100
- !alias.command.trim() ||
101
- !alias.directory.trim()) {
102
- (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.invalidAliasStructure(name), errors_1.ExitCode.InvalidInput);
103
- }
104
- }
105
- if (importNames.length === 0) {
106
- console.log(chalk_1.default.yellow(constants_1.HELP_MESSAGES.noCommands));
107
- return;
108
- }
109
- console.log(chalk_1.default.blue(`Found ${importNames.length} command(s) to import\n`));
110
- // Create backup of existing config before importing
111
- const existingAliases = (0, storage_1.loadAliases)();
112
- if (Object.keys(existingAliases).length > 0) {
113
- const configPath = (0, storage_1.getConfigPath)();
114
- const backupPath = `${configPath}.backup.${Date.now()}`;
115
- try {
116
- fs.copyFileSync(configPath, backupPath);
117
- console.log(chalk_1.default.gray(`Backup created: ${backupPath}\n`));
118
- }
119
- catch (backupError) {
120
- console.warn(chalk_1.default.yellow(`Warning: Could not create backup: ${backupError.message}`));
121
- }
122
- }
123
- const conflicts = [];
124
- const newAliases = [];
125
- // Check for conflicts
126
- for (const name of importNames) {
127
- if ((0, storage_1.aliasExists)(name)) {
128
- conflicts.push(name);
129
- }
130
- else {
131
- newAliases.push(name);
132
- }
133
- }
134
- // Handle conflicts
135
- const resolutions = {};
136
- if (conflicts.length > 0) {
137
- console.log(chalk_1.default.yellow(`Warning: ${conflicts.length} name conflict(s) found:\n`));
138
- for (const name of conflicts) {
139
- console.log(chalk_1.default.gray(`Existing: ${name}`));
140
- console.log(chalk_1.default.gray(` ${existingAliases[name].command}`));
141
- console.log(chalk_1.default.gray(`Importing: ${name}`));
142
- console.log(chalk_1.default.gray(` ${importAliases[name].command}\n`));
143
- const actionPrompt = {
144
- type: 'list',
145
- name: 'action',
146
- message: `What should we do with "${name}"?`,
147
- choices: [
148
- { name: 'Overwrite existing', value: 'overwrite' },
149
- { name: 'Skip this command', value: 'skip' },
150
- { name: 'Rename imported command', value: 'rename' },
151
- ],
152
- };
153
- const action = await (0, prompts_1.promptList)(actionPrompt);
154
- if (action === 'rename') {
155
- const renamePrompt = {
156
- type: 'input',
157
- name: 'newName',
158
- message: 'Enter new name:',
159
- default: `${name}_imported`,
160
- validate: (input) => {
161
- const trimmed = input.trim();
162
- if (!trimmed) {
163
- return constants_1.HELP_MESSAGES.emptyValue('Name');
164
- }
165
- if (trimmed.includes(' ')) {
166
- return constants_1.HELP_MESSAGES.invalidName;
167
- }
168
- // Check for invalid characters
169
- if (!/^[a-zA-Z0-9_-]+$/.test(trimmed)) {
170
- return 'Name can only contain letters, numbers, hyphens, and underscores';
171
- }
172
- if ((0, storage_1.aliasExists)(trimmed) || resolutions[trimmed]) {
173
- return `Name "${trimmed}" is already taken`;
174
- }
175
- return true;
176
- },
177
- };
178
- const newName = await (0, prompts_1.promptText)(renamePrompt);
179
- resolutions[name] = { action: 'rename', newName: newName.trim() };
180
- }
181
- else {
182
- resolutions[name] = { action };
183
- }
184
- console.log();
185
- }
186
- }
187
- // Apply imports
188
- const updatedAliases = { ...existingAliases };
189
- let importedCount = 0;
190
- let skippedCount = 0;
191
- for (const name of importNames) {
192
- const importAlias = importAliases[name];
193
- if (conflicts.includes(name)) {
194
- const resolution = resolutions[name];
195
- if (resolution.action === 'skip') {
196
- skippedCount++;
197
- continue;
198
- }
199
- else if (resolution.action === 'overwrite') {
200
- updatedAliases[name] = importAlias;
201
- importedCount++;
202
- }
203
- else if (resolution.action === 'rename' && resolution.newName) {
204
- updatedAliases[resolution.newName] = importAlias;
205
- importedCount++;
206
- }
207
- }
208
- else {
209
- updatedAliases[name] = importAlias;
210
- importedCount++;
211
- }
212
- }
213
- // Save the updated aliases
214
- const success = (0, storage_1.saveAliases)(updatedAliases);
215
- if (success) {
216
- console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.importComplete}:`));
217
- console.log(chalk_1.default.gray(` Imported: ${importedCount} command(s)`));
218
- if (skippedCount > 0) {
219
- console.log(chalk_1.default.gray(` Skipped: ${skippedCount} command(s)`));
220
- }
221
- }
222
- else {
223
- (0, errors_1.exitWithError)('Could not save imported commands');
224
- }
225
- }
226
- catch (error) {
227
- if ((0, errors_1.isInquirerTTYError)(error)) {
228
- (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.interactiveNotSupported, errors_1.ExitCode.GeneralError);
229
- }
230
- else {
231
- (0, errors_1.handleError)(error, 'Failed to import commands');
232
- }
233
- }
234
- }
235
- //# sourceMappingURL=import.js.map