envmatic 1.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 (102) hide show
  1. package/README.md +567 -0
  2. package/dist/cli.d.ts +7 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +203 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/add.d.ts +11 -0
  7. package/dist/commands/add.d.ts.map +1 -0
  8. package/dist/commands/add.js +77 -0
  9. package/dist/commands/add.js.map +1 -0
  10. package/dist/commands/delete.d.ts +6 -0
  11. package/dist/commands/delete.d.ts.map +1 -0
  12. package/dist/commands/delete.js +78 -0
  13. package/dist/commands/delete.js.map +1 -0
  14. package/dist/commands/edit.d.ts +13 -0
  15. package/dist/commands/edit.d.ts.map +1 -0
  16. package/dist/commands/edit.js +364 -0
  17. package/dist/commands/edit.js.map +1 -0
  18. package/dist/commands/import.d.ts +11 -0
  19. package/dist/commands/import.d.ts.map +1 -0
  20. package/dist/commands/import.js +103 -0
  21. package/dist/commands/import.js.map +1 -0
  22. package/dist/commands/init.d.ts +8 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +237 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/link.d.ts +16 -0
  27. package/dist/commands/link.d.ts.map +1 -0
  28. package/dist/commands/link.js +157 -0
  29. package/dist/commands/link.js.map +1 -0
  30. package/dist/commands/list.d.ts +9 -0
  31. package/dist/commands/list.d.ts.map +1 -0
  32. package/dist/commands/list.js +73 -0
  33. package/dist/commands/list.js.map +1 -0
  34. package/dist/commands/lock.d.ts +16 -0
  35. package/dist/commands/lock.d.ts.map +1 -0
  36. package/dist/commands/lock.js +245 -0
  37. package/dist/commands/lock.js.map +1 -0
  38. package/dist/commands/rotate.d.ts +15 -0
  39. package/dist/commands/rotate.d.ts.map +1 -0
  40. package/dist/commands/rotate.js +406 -0
  41. package/dist/commands/rotate.js.map +1 -0
  42. package/dist/commands/show.d.ts +9 -0
  43. package/dist/commands/show.d.ts.map +1 -0
  44. package/dist/commands/show.js +72 -0
  45. package/dist/commands/show.js.map +1 -0
  46. package/dist/commands/sync.d.ts +13 -0
  47. package/dist/commands/sync.d.ts.map +1 -0
  48. package/dist/commands/sync.js +174 -0
  49. package/dist/commands/sync.js.map +1 -0
  50. package/dist/commands/use.d.ts +19 -0
  51. package/dist/commands/use.d.ts.map +1 -0
  52. package/dist/commands/use.js +238 -0
  53. package/dist/commands/use.js.map +1 -0
  54. package/dist/constants.d.ts +20 -0
  55. package/dist/constants.d.ts.map +1 -0
  56. package/dist/constants.js +47 -0
  57. package/dist/constants.js.map +1 -0
  58. package/dist/index.d.ts +15 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +21 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/services/config.d.ts +64 -0
  63. package/dist/services/config.d.ts.map +1 -0
  64. package/dist/services/config.js +133 -0
  65. package/dist/services/config.js.map +1 -0
  66. package/dist/services/encryption.d.ts +30 -0
  67. package/dist/services/encryption.d.ts.map +1 -0
  68. package/dist/services/encryption.js +146 -0
  69. package/dist/services/encryption.js.map +1 -0
  70. package/dist/services/envfile.d.ts +76 -0
  71. package/dist/services/envfile.d.ts.map +1 -0
  72. package/dist/services/envfile.js +247 -0
  73. package/dist/services/envfile.js.map +1 -0
  74. package/dist/services/git.d.ts +60 -0
  75. package/dist/services/git.d.ts.map +1 -0
  76. package/dist/services/git.js +239 -0
  77. package/dist/services/git.js.map +1 -0
  78. package/dist/services/linker.d.ts +46 -0
  79. package/dist/services/linker.d.ts.map +1 -0
  80. package/dist/services/linker.js +222 -0
  81. package/dist/services/linker.js.map +1 -0
  82. package/dist/services/protection.d.ts +32 -0
  83. package/dist/services/protection.d.ts.map +1 -0
  84. package/dist/services/protection.js +190 -0
  85. package/dist/services/protection.js.map +1 -0
  86. package/dist/types/index.d.ts +73 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/index.js +5 -0
  89. package/dist/types/index.js.map +1 -0
  90. package/dist/utils/display.d.ts +74 -0
  91. package/dist/utils/display.d.ts.map +1 -0
  92. package/dist/utils/display.js +138 -0
  93. package/dist/utils/display.js.map +1 -0
  94. package/dist/utils/editor.d.ts +22 -0
  95. package/dist/utils/editor.d.ts.map +1 -0
  96. package/dist/utils/editor.js +159 -0
  97. package/dist/utils/editor.js.map +1 -0
  98. package/dist/utils/prompts.d.ts +41 -0
  99. package/dist/utils/prompts.d.ts.map +1 -0
  100. package/dist/utils/prompts.js +222 -0
  101. package/dist/utils/prompts.js.map +1 -0
  102. package/package.json +69 -0
@@ -0,0 +1,364 @@
1
+ /**
2
+ * Edit Command
3
+ * Edit variables in an env file
4
+ */
5
+ import inquirer from 'inquirer';
6
+ import ora from 'ora';
7
+ import fs from 'fs-extra';
8
+ import path from 'path';
9
+ import os from 'os';
10
+ import { readEnvFile, updateEnvFile, setVariable, removeVariable, listEnvFiles, getEnvFilePath, parseEnvContent, serializeEnvContent } from '../services/envfile.js';
11
+ import { sync } from '../services/git.js';
12
+ import { getConfig } from '../services/config.js';
13
+ import { makeMutable, makeImmutable } from '../services/protection.js';
14
+ import { syncCopies } from '../services/linker.js';
15
+ import { printBanner, success, error, info, warning, colors, formatFileId, maskValue } from '../utils/display.js';
16
+ import { getEncryptionOptions, select, confirm } from '../utils/prompts.js';
17
+ import { detectEditors, openInEditor, isTerminalEditor } from '../utils/editor.js';
18
+ /**
19
+ * Edit command with optional external editor support
20
+ */
21
+ export async function editCommand(fileId, options = {}) {
22
+ printBanner();
23
+ const config = await getConfig();
24
+ if (!config) {
25
+ error('Envmatic is not initialized. Run `envmatic init` first.');
26
+ return;
27
+ }
28
+ // If no file ID provided, prompt for selection
29
+ if (!fileId) {
30
+ const files = await listEnvFiles();
31
+ if (files.length === 0) {
32
+ error('No env files found. Add one with `envmatic add`');
33
+ return;
34
+ }
35
+ fileId = await select('Select an env file to edit:', files.map(f => ({
36
+ name: `${f.project}/${f.environment || 'default'}/${f.name}`,
37
+ value: f.id,
38
+ })));
39
+ }
40
+ const encryptionOptions = await getEncryptionOptions();
41
+ try {
42
+ const { metadata, variables } = await readEnvFile(fileId, encryptionOptions);
43
+ console.log('Editing: ' + formatFileId(fileId) + '\n');
44
+ // Make file mutable for editing
45
+ const filePath = getEnvFilePath(fileId, metadata.encrypted);
46
+ if (metadata.immutable) {
47
+ await makeMutable(filePath);
48
+ }
49
+ // External editor mode
50
+ if (options.editor) {
51
+ await editWithExternalEditor(fileId, metadata, variables, encryptionOptions, filePath);
52
+ return;
53
+ }
54
+ // Interactive edit loop
55
+ let modified = false;
56
+ while (true) {
57
+ const { action } = await inquirer.prompt([
58
+ {
59
+ type: 'list',
60
+ name: 'action',
61
+ message: 'What would you like to do?',
62
+ choices: [
63
+ { name: 'View all variables', value: 'view' },
64
+ { name: 'Add/Update a variable', value: 'set' },
65
+ { name: 'Remove a variable', value: 'remove' },
66
+ new inquirer.Separator(),
67
+ { name: 'Save and exit', value: 'save' },
68
+ { name: 'Discard changes and exit', value: 'cancel' },
69
+ ],
70
+ },
71
+ ]);
72
+ if (action === 'view') {
73
+ console.log();
74
+ for (const [key, value] of Object.entries(variables)) {
75
+ console.log(` ${colors.secondary(key)} = ${maskValue(value)}`);
76
+ }
77
+ console.log();
78
+ }
79
+ else if (action === 'set') {
80
+ const { key, value } = await inquirer.prompt([
81
+ {
82
+ type: 'input',
83
+ name: 'key',
84
+ message: 'Variable name:',
85
+ validate: (input) => input.trim().length > 0 || 'Name is required',
86
+ },
87
+ {
88
+ type: 'input',
89
+ name: 'value',
90
+ message: 'Value:',
91
+ },
92
+ ]);
93
+ const oldValue = variables[key.trim()];
94
+ variables[key.trim()] = value;
95
+ modified = true;
96
+ if (oldValue !== undefined) {
97
+ info(`Updated: ${key}`);
98
+ }
99
+ else {
100
+ success(`Added: ${key}`);
101
+ }
102
+ }
103
+ else if (action === 'remove') {
104
+ const keys = Object.keys(variables);
105
+ if (keys.length === 0) {
106
+ info('No variables to remove.');
107
+ continue;
108
+ }
109
+ const { keyToRemove } = await inquirer.prompt([
110
+ {
111
+ type: 'list',
112
+ name: 'keyToRemove',
113
+ message: 'Select variable to remove:',
114
+ choices: keys,
115
+ },
116
+ ]);
117
+ delete variables[keyToRemove];
118
+ modified = true;
119
+ success(`Removed: ${keyToRemove}`);
120
+ }
121
+ else if (action === 'save') {
122
+ if (modified) {
123
+ const spinner = ora('Saving changes...').start();
124
+ await updateEnvFile(fileId, variables, encryptionOptions);
125
+ // Re-apply protection if needed
126
+ if (metadata.immutable) {
127
+ await makeImmutable(filePath);
128
+ }
129
+ spinner.succeed('Changes saved');
130
+ // Sync copies
131
+ await syncCopies(fileId, encryptionOptions);
132
+ // Sync to remote
133
+ const syncSpinner = ora('Syncing to remote...').start();
134
+ try {
135
+ await sync();
136
+ syncSpinner.succeed('Synced');
137
+ }
138
+ catch {
139
+ syncSpinner.warn('Could not sync (will sync later)');
140
+ }
141
+ console.log();
142
+ success('File updated successfully!');
143
+ }
144
+ else {
145
+ info('No changes to save.');
146
+ }
147
+ break;
148
+ }
149
+ else if (action === 'cancel') {
150
+ if (modified) {
151
+ const confirmCancel = await confirm('Discard all changes?', false);
152
+ if (!confirmCancel) {
153
+ continue;
154
+ }
155
+ }
156
+ // Restore protection
157
+ if (metadata.immutable) {
158
+ await makeImmutable(filePath);
159
+ }
160
+ info('Changes discarded.');
161
+ break;
162
+ }
163
+ }
164
+ }
165
+ catch (err) {
166
+ const errorMessage = err instanceof Error ? err.message : String(err);
167
+ error(errorMessage);
168
+ }
169
+ }
170
+ /**
171
+ * Edit a file using an external editor
172
+ */
173
+ async function editWithExternalEditor(fileId, metadata, variables, encryptionOptions, filePath) {
174
+ // Detect available editors
175
+ const detectSpinner = ora('Detecting available editors...').start();
176
+ const editors = await detectEditors();
177
+ detectSpinner.stop();
178
+ if (editors.length === 0) {
179
+ error('No editors found on your system.');
180
+ info('Set the EDITOR environment variable to specify your preferred editor.');
181
+ // Restore protection
182
+ if (metadata.immutable) {
183
+ await makeImmutable(filePath);
184
+ }
185
+ return;
186
+ }
187
+ // Let user choose editor
188
+ const { editorChoice } = await inquirer.prompt([
189
+ {
190
+ type: 'list',
191
+ name: 'editorChoice',
192
+ message: 'Choose an editor:',
193
+ choices: editors.map(e => ({
194
+ name: e.name,
195
+ value: e.command,
196
+ })),
197
+ },
198
+ ]);
199
+ // For encrypted files, we need to create a temporary decrypted file
200
+ let editFilePath = filePath;
201
+ let tempFilePath = null;
202
+ if (metadata.encrypted) {
203
+ // Create a temp file with decrypted content
204
+ const tempDir = os.tmpdir();
205
+ const tempFileName = `envmatic-edit-${Date.now()}.env`;
206
+ tempFilePath = path.join(tempDir, tempFileName);
207
+ const content = serializeEnvContent(variables);
208
+ await fs.writeFile(tempFilePath, content);
209
+ editFilePath = tempFilePath;
210
+ console.log();
211
+ info('Created temporary decrypted file for editing.');
212
+ }
213
+ console.log();
214
+ console.log(colors.warning('┌─────────────────────────────────────────────────────────────┐'));
215
+ console.log(colors.warning('│') + colors.accent(' 🔓 FILE UNLOCKED FOR EDITING ') + colors.warning('│'));
216
+ console.log(colors.warning('├─────────────────────────────────────────────────────────────┤'));
217
+ console.log(colors.warning('│') + ' The file is now unlocked and editable. ' + colors.warning('│'));
218
+ console.log(colors.warning('│') + ' ' + colors.warning('│'));
219
+ console.log(colors.warning('│') + ' After you finish editing and close the editor: ' + colors.warning('│'));
220
+ console.log(colors.warning('│') + ' • Changes will be saved automatically ' + colors.warning('│'));
221
+ console.log(colors.warning('│') + ' • The file will be re-encrypted (if applicable) ' + colors.warning('│'));
222
+ console.log(colors.warning('│') + ' • You\'ll be prompted to sync and lock ' + colors.warning('│'));
223
+ console.log(colors.warning('│') + ' ' + colors.warning('│'));
224
+ console.log(colors.warning('│') + ' If something goes wrong, run: ' + colors.warning('│'));
225
+ console.log(colors.warning('│') + colors.primary(' envmatic lock ') + colors.warning('│'));
226
+ console.log(colors.warning('└─────────────────────────────────────────────────────────────┘'));
227
+ console.log();
228
+ // Open editor and wait
229
+ const editorSpinner = ora('Opening editor...').start();
230
+ try {
231
+ // For terminal editors, stop the spinner before opening
232
+ if (isTerminalEditor(editorChoice)) {
233
+ editorSpinner.stop();
234
+ console.log(colors.muted('Opening editor... (save and quit when done)\n'));
235
+ }
236
+ await openInEditor(editFilePath, editorChoice);
237
+ if (!isTerminalEditor(editorChoice)) {
238
+ editorSpinner.succeed('Editor closed');
239
+ }
240
+ // Read the edited content
241
+ const editedContent = await fs.readFile(editFilePath, 'utf-8');
242
+ const editedVariables = parseEnvContent(editedContent);
243
+ // Check if content changed
244
+ const originalContent = serializeEnvContent(variables);
245
+ const newContent = serializeEnvContent(editedVariables);
246
+ if (originalContent === newContent) {
247
+ info('No changes detected.');
248
+ // Clean up temp file
249
+ if (tempFilePath) {
250
+ await fs.remove(tempFilePath);
251
+ }
252
+ // Ask if they want to lock the file
253
+ const shouldLock = await confirm('Lock the file?', true);
254
+ if (shouldLock && metadata.immutable) {
255
+ await makeImmutable(filePath);
256
+ success('File locked.');
257
+ }
258
+ else if (!shouldLock) {
259
+ console.log();
260
+ warning('File remains unlocked. Run `envmatic lock` when done.');
261
+ }
262
+ return;
263
+ }
264
+ // Save changes
265
+ const saveSpinner = ora('Saving changes...').start();
266
+ await updateEnvFile(fileId, editedVariables, encryptionOptions);
267
+ saveSpinner.succeed('Changes saved');
268
+ // Clean up temp file
269
+ if (tempFilePath) {
270
+ await fs.remove(tempFilePath);
271
+ }
272
+ // Sync copies
273
+ await syncCopies(fileId, encryptionOptions);
274
+ // Sync to remote
275
+ const shouldSync = await confirm('Sync changes to remote?', true);
276
+ if (shouldSync) {
277
+ const syncSpinner = ora('Syncing to remote...').start();
278
+ try {
279
+ await sync();
280
+ syncSpinner.succeed('Synced');
281
+ }
282
+ catch {
283
+ syncSpinner.warn('Could not sync (will sync later)');
284
+ }
285
+ }
286
+ // Lock the file
287
+ const shouldLock = await confirm('Lock the file?', true);
288
+ if (shouldLock && metadata.immutable) {
289
+ await makeImmutable(filePath);
290
+ success('File locked.');
291
+ }
292
+ else if (!shouldLock) {
293
+ console.log();
294
+ warning('File remains unlocked. Run `envmatic lock` when done.');
295
+ }
296
+ console.log();
297
+ success('File updated successfully!');
298
+ }
299
+ catch (err) {
300
+ const errorMessage = err instanceof Error ? err.message : String(err);
301
+ error(`Editor error: ${errorMessage}`);
302
+ // Clean up temp file on error
303
+ if (tempFilePath && await fs.pathExists(tempFilePath)) {
304
+ await fs.remove(tempFilePath);
305
+ }
306
+ console.log();
307
+ warning('File may still be unlocked. Run `envmatic lock` to secure it.');
308
+ }
309
+ }
310
+ export async function setCommand(fileId, key, value) {
311
+ printBanner();
312
+ const config = await getConfig();
313
+ if (!config) {
314
+ error('Envmatic is not initialized. Run `envmatic init` first.');
315
+ return;
316
+ }
317
+ const encryptionOptions = await getEncryptionOptions();
318
+ const spinner = ora('Setting variable...').start();
319
+ try {
320
+ await setVariable(fileId, key, value, encryptionOptions);
321
+ await syncCopies(fileId, encryptionOptions);
322
+ spinner.succeed(`Set ${key} in ${fileId}`);
323
+ // Sync
324
+ try {
325
+ await sync();
326
+ }
327
+ catch {
328
+ // Ignore sync errors
329
+ }
330
+ }
331
+ catch (err) {
332
+ spinner.fail('Failed to set variable');
333
+ const errorMessage = err instanceof Error ? err.message : String(err);
334
+ error(errorMessage);
335
+ }
336
+ }
337
+ export async function unsetCommand(fileId, key) {
338
+ printBanner();
339
+ const config = await getConfig();
340
+ if (!config) {
341
+ error('Envmatic is not initialized. Run `envmatic init` first.');
342
+ return;
343
+ }
344
+ const encryptionOptions = await getEncryptionOptions();
345
+ const spinner = ora('Removing variable...').start();
346
+ try {
347
+ await removeVariable(fileId, key, encryptionOptions);
348
+ await syncCopies(fileId, encryptionOptions);
349
+ spinner.succeed(`Removed ${key} from ${fileId}`);
350
+ // Sync
351
+ try {
352
+ await sync();
353
+ }
354
+ catch {
355
+ // Ignore sync errors
356
+ }
357
+ }
358
+ catch (err) {
359
+ spinner.fail('Failed to remove variable');
360
+ const errorMessage = err instanceof Error ? err.message : String(err);
361
+ error(errorMessage);
362
+ }
363
+ }
364
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Import Command
3
+ * Import an existing .env file into the vault
4
+ */
5
+ export declare function importCommand(sourcePath: string, options?: {
6
+ project?: string;
7
+ environment?: string;
8
+ name?: string;
9
+ description?: string;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CA+Gf"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Import Command
3
+ * Import an existing .env file into the vault
4
+ */
5
+ import fs from 'fs-extra';
6
+ import path from 'path';
7
+ import ora from 'ora';
8
+ import { importEnvFile, listProjects, getEnvFilePath } from '../services/envfile.js';
9
+ import { sync } from '../services/git.js';
10
+ import { getConfig } from '../services/config.js';
11
+ import { makeImmutable } from '../services/protection.js';
12
+ import { printBanner, success, error, info, colors, formatFileId } from '../utils/display.js';
13
+ import { promptProject, promptEnvironment, getEncryptionOptions, confirm } from '../utils/prompts.js';
14
+ export async function importCommand(sourcePath, options = {}) {
15
+ printBanner();
16
+ const config = await getConfig();
17
+ if (!config) {
18
+ error('Envmatic is not initialized. Run `envmatic init` first.');
19
+ return;
20
+ }
21
+ // Resolve and validate source path
22
+ const resolvedPath = path.resolve(sourcePath);
23
+ if (!(await fs.pathExists(resolvedPath))) {
24
+ error(`File not found: ${resolvedPath}`);
25
+ return;
26
+ }
27
+ // Read and preview the file
28
+ const content = await fs.readFile(resolvedPath, 'utf-8');
29
+ const lines = content.trim().split('\n').filter(l => l && !l.startsWith('#'));
30
+ console.log(colors.muted(`Importing: ${resolvedPath}`));
31
+ console.log(colors.muted(`Variables: ${lines.length}`));
32
+ console.log();
33
+ // Preview first few variables
34
+ const previewCount = Math.min(5, lines.length);
35
+ console.log(colors.muted('Preview:'));
36
+ for (let i = 0; i < previewCount; i++) {
37
+ const line = lines[i];
38
+ const [key] = line.split('=');
39
+ console.log(colors.muted(` ${key}=...`));
40
+ }
41
+ if (lines.length > previewCount) {
42
+ console.log(colors.muted(` ... and ${lines.length - previewCount} more`));
43
+ }
44
+ console.log();
45
+ // Confirm import
46
+ const proceed = await confirm('Import this file?', true);
47
+ if (!proceed) {
48
+ info('Import cancelled.');
49
+ return;
50
+ }
51
+ // Get project
52
+ const projects = await listProjects();
53
+ const project = options.project || await promptProject(projects);
54
+ // Get environment
55
+ const environment = options.environment || await promptEnvironment();
56
+ // Get encryption options
57
+ const encryptionOptions = await getEncryptionOptions();
58
+ // Import the file
59
+ const spinner = ora('Importing env file...').start();
60
+ try {
61
+ const envFile = await importEnvFile(resolvedPath, project, environment, {
62
+ name: options.name || path.basename(resolvedPath),
63
+ description: options.description,
64
+ encryptionOptions,
65
+ immutable: config.immutableByDefault,
66
+ });
67
+ // Apply file protection if needed
68
+ if (envFile.immutable) {
69
+ const filePath = getEnvFilePath(envFile.id, envFile.encrypted);
70
+ await makeImmutable(filePath);
71
+ }
72
+ spinner.succeed('File imported');
73
+ // Sync to remote
74
+ const syncSpinner = ora('Syncing to remote...').start();
75
+ try {
76
+ await sync();
77
+ syncSpinner.succeed('Synced to remote');
78
+ }
79
+ catch {
80
+ syncSpinner.warn('Could not sync to remote (will sync later)');
81
+ }
82
+ console.log();
83
+ success('Environment file imported successfully!');
84
+ console.log();
85
+ console.log(' File ID: ' + formatFileId(envFile.id));
86
+ console.log(' Variables: ' + lines.length);
87
+ console.log(' Encrypted: ' + (envFile.encrypted ? colors.secondary('yes') : 'no'));
88
+ console.log();
89
+ // Ask about replacing original
90
+ const replace = await confirm('Replace original file with a link to the vault?', false);
91
+ if (replace) {
92
+ const { createCopy } = await import('../services/linker.js');
93
+ await createCopy(envFile.id, resolvedPath, encryptionOptions, true);
94
+ success('Original file replaced with vault link');
95
+ }
96
+ }
97
+ catch (err) {
98
+ spinner.fail('Failed to import env file');
99
+ const errorMessage = err instanceof Error ? err.message : String(err);
100
+ error(errorMessage);
101
+ }
102
+ }
103
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Init Command
3
+ * Initialize Envmatic with a Git repository
4
+ */
5
+ export declare function initCommand(options: {
6
+ force?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+P7E"}