@nocoo/otter 1.0.3 → 1.2.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 (65) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +162 -85
  3. package/dist/cli.js.map +1 -1
  4. package/dist/collectors/applications.d.ts +7 -2
  5. package/dist/collectors/applications.d.ts.map +1 -1
  6. package/dist/collectors/applications.js +55 -21
  7. package/dist/collectors/applications.js.map +1 -1
  8. package/dist/collectors/base.d.ts.map +1 -1
  9. package/dist/collectors/base.js +1 -0
  10. package/dist/collectors/base.js.map +1 -1
  11. package/dist/collectors/cloud-cli.d.ts +9 -0
  12. package/dist/collectors/cloud-cli.d.ts.map +1 -0
  13. package/dist/collectors/cloud-cli.js +61 -0
  14. package/dist/collectors/cloud-cli.js.map +1 -0
  15. package/dist/collectors/dev-toolchain.d.ts +21 -0
  16. package/dist/collectors/dev-toolchain.d.ts.map +1 -0
  17. package/dist/collectors/dev-toolchain.js +252 -0
  18. package/dist/collectors/dev-toolchain.js.map +1 -0
  19. package/dist/collectors/docker.d.ts +10 -0
  20. package/dist/collectors/docker.d.ts.map +1 -0
  21. package/dist/collectors/docker.js +57 -0
  22. package/dist/collectors/docker.js.map +1 -0
  23. package/dist/collectors/fonts.d.ts +9 -0
  24. package/dist/collectors/fonts.d.ts.map +1 -0
  25. package/dist/collectors/fonts.js +36 -0
  26. package/dist/collectors/fonts.js.map +1 -0
  27. package/dist/collectors/homebrew.d.ts +2 -1
  28. package/dist/collectors/homebrew.d.ts.map +1 -1
  29. package/dist/collectors/homebrew.js +56 -12
  30. package/dist/collectors/homebrew.js.map +1 -1
  31. package/dist/collectors/index.d.ts +7 -0
  32. package/dist/collectors/index.d.ts.map +1 -1
  33. package/dist/collectors/index.js +21 -0
  34. package/dist/collectors/index.js.map +1 -1
  35. package/dist/collectors/launch-agents.d.ts +10 -0
  36. package/dist/collectors/launch-agents.d.ts.map +1 -0
  37. package/dist/collectors/launch-agents.js +53 -0
  38. package/dist/collectors/launch-agents.js.map +1 -0
  39. package/dist/collectors/macos-defaults.d.ts +10 -0
  40. package/dist/collectors/macos-defaults.d.ts.map +1 -0
  41. package/dist/collectors/macos-defaults.js +53 -0
  42. package/dist/collectors/macos-defaults.js.map +1 -0
  43. package/dist/collectors/vscode.d.ts +15 -0
  44. package/dist/collectors/vscode.d.ts.map +1 -0
  45. package/dist/collectors/vscode.js +118 -0
  46. package/dist/collectors/vscode.js.map +1 -0
  47. package/dist/commands/scan.d.ts +2 -0
  48. package/dist/commands/scan.d.ts.map +1 -1
  49. package/dist/commands/scan.js +2 -0
  50. package/dist/commands/scan.js.map +1 -1
  51. package/dist/commands/snapshot.d.ts +2 -9
  52. package/dist/commands/snapshot.d.ts.map +1 -1
  53. package/dist/commands/snapshot.js +74 -64
  54. package/dist/commands/snapshot.js.map +1 -1
  55. package/dist/snapshot/builder.d.ts.map +1 -1
  56. package/dist/snapshot/builder.js +1 -0
  57. package/dist/snapshot/builder.js.map +1 -1
  58. package/dist/ui.d.ts +63 -0
  59. package/dist/ui.d.ts.map +1 -0
  60. package/dist/ui.js +167 -0
  61. package/dist/ui.js.map +1 -0
  62. package/dist/utils/icons.d.ts.map +1 -1
  63. package/dist/utils/icons.js +59 -7
  64. package/dist/utils/icons.js.map +1 -1
  65. package/package.json +3 -2
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA4cA,eAAO,MAAM,IAAI,qDAef,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAwjBA,eAAO,MAAM,IAAI,qDAef,CAAC"}
package/dist/cli.js CHANGED
@@ -1,18 +1,19 @@
1
1
  import { defineCommand } from "citty";
2
- import { consola } from "consola";
3
- import pc from "picocolors";
4
2
  import { homedir } from "node:os";
5
3
  import { join } from "node:path";
4
+ import yoctoSpinner from "yocto-spinner";
6
5
  import { createDefaultCollectors } from "./collectors/index.js";
7
6
  import { executeScan } from "./commands/scan.js";
8
7
  import { executeConfig } from "./commands/config.js";
9
- import { executeLogin, resolveHost, buildWebhookUrl } from "./commands/login.js";
10
- import { formatSnapshotList, formatSnapshotDetail, diffSnapshots, formatSnapshotDiff } from "./commands/snapshot.js";
8
+ import { executeLogin, resolveHost, buildWebhookUrl, } from "./commands/login.js";
9
+ import { formatSnapshotList, formatSnapshotDetail, diffSnapshots, formatSnapshotDiff, } from "./commands/snapshot.js";
11
10
  import { ConfigManager } from "./config/manager.js";
12
11
  import { SnapshotStore } from "./storage/local.js";
13
12
  import { uploadSnapshot } from "./uploader/webhook.js";
14
13
  import { uploadIconsToServer } from "./uploader/icons-server.js";
15
14
  import { exportIcons } from "./utils/icons.js";
15
+ import * as ui from "./ui.js";
16
+ const CLI_VERSION = "1.2.0";
16
17
  const otterConfigDir = join(homedir(), ".config", "otter");
17
18
  const snapshotStore = new SnapshotStore(join(otterConfigDir, "snapshots"));
18
19
  /**
@@ -26,6 +27,7 @@ function isDevMode() {
26
27
  function getConfigManager() {
27
28
  return new ConfigManager(otterConfigDir, isDevMode());
28
29
  }
30
+ // ── scan ────────────────────────────────────────────────────────────
29
31
  const scanCommand = defineCommand({
30
32
  meta: {
31
33
  name: "scan",
@@ -52,24 +54,40 @@ const scanCommand = defineCommand({
52
54
  // When --json is set, redirect all progress output to stderr
53
55
  // so that stdout contains only valid JSON
54
56
  if (args.json) {
55
- consola.options.stdout = process.stderr;
57
+ ui.consola.options.stdout = process.stderr;
56
58
  }
57
- consola.start("Scanning your Mac environment...\n");
59
+ ui.banner(CLI_VERSION);
60
+ console.log("Scanning environment...\n");
58
61
  const collectors = createDefaultCollectors(homedir(), {
59
62
  slim: args.slim,
60
63
  });
64
+ let scanSpinner = null;
65
+ const useSpinner = !args.json;
61
66
  const snapshot = await executeScan(collectors, {
67
+ onStart: (_id, label) => {
68
+ if (useSpinner) {
69
+ scanSpinner = yoctoSpinner({
70
+ text: `Scanning ${label}...`,
71
+ stream: process.stdout,
72
+ }).start();
73
+ }
74
+ },
62
75
  onProgress: (_id, result) => {
63
- const fileCount = result.files.length;
64
- const listCount = result.lists.length;
65
- const errorCount = result.errors.length;
66
- const status = errorCount > 0 ? pc.yellow("⚠") : pc.green("✓");
67
- consola.log(` ${status} ${pc.bold(result.label)}: ${fileCount} files, ${listCount} list items${errorCount > 0 ? `, ${pc.yellow(`${errorCount} errors`)}` : ""} ${pc.dim(`(${result.durationMs}ms)`)}`);
76
+ scanSpinner?.stop();
77
+ scanSpinner = null;
78
+ ui.item({
79
+ label: result.label,
80
+ fileCount: result.files.length,
81
+ listCount: result.lists.length,
82
+ errorCount: result.errors.length,
83
+ skippedCount: result.skipped?.length ?? 0,
84
+ durationMs: result.durationMs,
85
+ });
68
86
  },
69
87
  });
70
88
  if (args.save) {
71
89
  const filename = await snapshotStore.save(snapshot);
72
- consola.success(`Snapshot saved locally: ${pc.dim(filename)}`);
90
+ ui.statusLine(ui.S.success, `Saved locally: ${ui.pc.dim(filename)}`);
73
91
  }
74
92
  if (args.json) {
75
93
  process.stdout.write(JSON.stringify(snapshot, null, 2) + "\n");
@@ -77,11 +95,18 @@ const scanCommand = defineCommand({
77
95
  else {
78
96
  const totalFiles = snapshot.collectors.reduce((sum, c) => sum + c.files.length, 0);
79
97
  const totalLists = snapshot.collectors.reduce((sum, c) => sum + c.lists.length, 0);
80
- consola.success(`\nScan complete: ${pc.bold(String(totalFiles))} files, ${pc.bold(String(totalLists))} list items from ${pc.bold(String(snapshot.collectors.length))} collectors`);
81
- consola.info(`Snapshot ID: ${pc.dim(snapshot.id)}`);
98
+ ui.blank();
99
+ ui.box({
100
+ title: "Scan complete",
101
+ lines: [
102
+ `${totalFiles} files \u00b7 ${totalLists} items \u00b7 ${snapshot.collectors.length} collectors`,
103
+ ui.pc.dim(`Snapshot: ${snapshot.id.slice(0, 8)}`),
104
+ ],
105
+ });
82
106
  }
83
107
  },
84
108
  });
109
+ // ── backup ──────────────────────────────────────────────────────────
85
110
  const backupCommand = defineCommand({
86
111
  meta: {
87
112
  name: "backup",
@@ -103,66 +128,99 @@ const backupCommand = defineCommand({
103
128
  const configManager = getConfigManager();
104
129
  const config = await configManager.load();
105
130
  if (!config.token) {
106
- consola.error("Not logged in. Run " +
107
- pc.bold("otter login") +
108
- " first.");
131
+ ui.banner(CLI_VERSION);
132
+ ui.error(`Not logged in. Run ${ui.pc.bold("otter login")} first.`);
109
133
  process.exitCode = 1;
110
134
  return;
111
135
  }
112
136
  const host = resolveHost({ dev: args.dev });
113
137
  const webhookUrl = buildWebhookUrl(host, config.token);
114
- consola.start("Scanning your Mac environment...\n");
138
+ ui.banner(CLI_VERSION);
139
+ // ── Step 1: Scan ──
140
+ ui.step("Scanning environment", 1, 3);
141
+ ui.blank();
115
142
  const collectors = createDefaultCollectors(homedir(), {
116
143
  slim: args.slim,
117
144
  });
145
+ let backupSpinner = null;
118
146
  const snapshot = await executeScan(collectors, {
147
+ onStart: (_id, label) => {
148
+ backupSpinner = yoctoSpinner({
149
+ text: `Scanning ${label}...`,
150
+ stream: process.stdout,
151
+ }).start();
152
+ },
119
153
  onProgress: (_id, result) => {
120
- const status = result.errors.length > 0 ? pc.yellow("⚠") : pc.green("✓");
121
- consola.log(` ${status} ${pc.bold(result.label)} ${pc.dim(`(${result.durationMs}ms)`)}`);
154
+ backupSpinner?.stop();
155
+ backupSpinner = null;
156
+ ui.item({
157
+ label: result.label,
158
+ fileCount: result.files.length,
159
+ listCount: result.lists.length,
160
+ errorCount: result.errors.length,
161
+ skippedCount: result.skipped?.length ?? 0,
162
+ durationMs: result.durationMs,
163
+ });
122
164
  },
123
165
  });
124
- consola.start("\nUploading snapshot...");
166
+ ui.blank();
167
+ // ── Step 2: Upload snapshot ──
168
+ ui.step("Uploading snapshot", 2, 3);
169
+ const spinner = yoctoSpinner({ text: "Uploading..." }).start();
125
170
  const uploadResult = await uploadSnapshot(snapshot, { webhookUrl });
126
- if (uploadResult.success) {
127
- consola.success(`Backup uploaded successfully ${pc.dim(`(${uploadResult.durationMs}ms)`)}`);
128
- // Auto-save locally after successful upload
129
- const filename = await snapshotStore.save(snapshot);
130
- consola.success(`Snapshot saved locally: ${pc.dim(filename)}`);
131
- consola.info(`Snapshot ID: ${pc.dim(snapshot.id)}`);
132
- // Export and upload app icons via server endpoint
133
- consola.start("\nExporting app icons...");
134
- const iconDir = join(otterConfigDir, "icons");
135
- const iconResults = await exportIcons({ outputDir: iconDir, size: 128 });
136
- const exported = iconResults.filter((r) => r.success && r.outputPath);
137
- if (exported.length > 0) {
138
- consola.success(`Exported ${pc.bold(String(exported.length))} icons`);
139
- const iconsUrl = `${webhookUrl}/icons`;
140
- const icons = exported.map((r) => ({
141
- appName: r.appName,
142
- pngPath: r.outputPath,
143
- }));
144
- consola.start("Uploading icons to server...");
145
- const iconUpload = await uploadIconsToServer(icons, { iconsUrl });
146
- if (iconUpload.success) {
147
- consola.success(`Icons uploaded: ${pc.bold(String(iconUpload.stored))} stored ${pc.dim(`(${iconUpload.durationMs}ms)`)}`);
148
- }
149
- else {
150
- consola.warn(`Icon upload issue: ${iconUpload.error ?? "partial failure"}` +
151
- (iconUpload.stored > 0
152
- ? ` (${iconUpload.stored}/${iconUpload.total} stored)`
153
- : ""));
154
- }
171
+ if (!uploadResult.success) {
172
+ spinner.error(`Upload failed: ${uploadResult.error}`);
173
+ process.exitCode = 1;
174
+ return;
175
+ }
176
+ spinner.success("Uploaded");
177
+ // Auto-save locally after successful upload
178
+ const filename = await snapshotStore.save(snapshot);
179
+ ui.statusLine(ui.S.success, `Saved locally`, 0);
180
+ ui.blank();
181
+ // ── Step 3: Icons ──
182
+ ui.step("Uploading icons", 3, 3);
183
+ const iconDir = join(otterConfigDir, "icons");
184
+ const iconResults = await exportIcons({ outputDir: iconDir, size: 128 });
185
+ const exported = iconResults.filter((r) => r.success && r.outputPath);
186
+ if (exported.length > 0) {
187
+ ui.statusLine(ui.S.success, `${exported.length} icons exported`);
188
+ const iconsUrl = `${webhookUrl}/icons`;
189
+ const icons = exported.map((r) => ({
190
+ appName: r.appName,
191
+ pngPath: r.outputPath,
192
+ }));
193
+ const iconSpinner = yoctoSpinner({ text: "Uploading icons..." }).start();
194
+ const iconUpload = await uploadIconsToServer(icons, { iconsUrl });
195
+ if (iconUpload.success) {
196
+ iconSpinner.success(`${iconUpload.stored} icons uploaded`);
155
197
  }
156
198
  else {
157
- consola.info("No app icons found to upload");
199
+ iconSpinner.warning(`Icon upload issue: ${iconUpload.error ?? "partial failure"}` +
200
+ (iconUpload.stored > 0
201
+ ? ` (${iconUpload.stored}/${iconUpload.total} stored)`
202
+ : ""));
158
203
  }
159
204
  }
160
205
  else {
161
- consola.error(`Upload failed: ${uploadResult.error}`);
162
- process.exitCode = 1;
206
+ ui.statusLine(ui.S.info, "No app icons found to upload");
163
207
  }
208
+ // ── Summary ──
209
+ const totalFiles = snapshot.collectors.reduce((sum, c) => sum + c.files.length, 0);
210
+ const totalLists = snapshot.collectors.reduce((sum, c) => sum + c.lists.length, 0);
211
+ ui.blank();
212
+ ui.box({
213
+ title: "Backup complete",
214
+ lines: [
215
+ `${totalFiles} files \u00b7 ${totalLists} items \u00b7 ${snapshot.collectors.length} collectors`,
216
+ ...(exported.length > 0 ? [`${exported.length} icons uploaded`] : []),
217
+ "",
218
+ ui.pc.dim(`Snapshot: ${snapshot.id.slice(0, 8)}`),
219
+ ],
220
+ });
164
221
  },
165
222
  });
223
+ // ── config ──────────────────────────────────────────────────────────
166
224
  const configCommand = defineCommand({
167
225
  meta: {
168
226
  name: "config",
@@ -190,14 +248,19 @@ const configCommand = defineCommand({
190
248
  const action = args.action || "show";
191
249
  if (action === "show") {
192
250
  const result = await executeConfig(configManager, { action: "show" });
193
- consola.info("Current configuration:");
194
- consola.log(JSON.stringify(result, null, 2));
195
- consola.log(pc.dim(`\nConfig file: ${configManager.configPath}`));
251
+ const entries = Object.entries(result);
252
+ const lines = entries.map(([k, v]) => `${ui.pc.bold(k)}: ${ui.pc.dim(String(v))}`);
253
+ lines.push("", ui.pc.dim(`Config file: ${configManager.configPath}`));
254
+ ui.consola.box({
255
+ title: "Configuration",
256
+ message: lines.join("\n"),
257
+ style: { marginLeft: 0 },
258
+ });
196
259
  return;
197
260
  }
198
261
  if (action === "get") {
199
262
  if (!args.key) {
200
- consola.error("Usage: otter config get <key>");
263
+ ui.error("Usage: otter config get <key>");
201
264
  process.exitCode = 1;
202
265
  return;
203
266
  }
@@ -206,16 +269,16 @@ const configCommand = defineCommand({
206
269
  key: args.key,
207
270
  });
208
271
  if (result !== undefined) {
209
- consola.log(result);
272
+ console.log(result);
210
273
  }
211
274
  else {
212
- consola.warn(`Key '${args.key}' is not set`);
275
+ ui.warn(`Key '${args.key}' is not set`);
213
276
  }
214
277
  return;
215
278
  }
216
279
  if (action === "set") {
217
280
  if (!args.key || !args.value) {
218
- consola.error("Usage: otter config set <key> <value>");
281
+ ui.error("Usage: otter config set <key> <value>");
219
282
  process.exitCode = 1;
220
283
  return;
221
284
  }
@@ -224,13 +287,14 @@ const configCommand = defineCommand({
224
287
  key: args.key,
225
288
  value: args.value,
226
289
  });
227
- consola.success(`Set ${pc.bold(args.key)} = ${args.value}`);
290
+ ui.success(`Set ${ui.pc.bold(args.key)} = ${args.value}`);
228
291
  return;
229
292
  }
230
- consola.error(`Unknown action: ${action}. Use get, set, or show.`);
293
+ ui.error(`Unknown action: ${action}. Use get, set, or show.`);
231
294
  process.exitCode = 1;
232
295
  },
233
296
  });
297
+ // ── snapshot ────────────────────────────────────────────────────────
234
298
  const snapshotListCommand = defineCommand({
235
299
  meta: {
236
300
  name: "list",
@@ -238,7 +302,7 @@ const snapshotListCommand = defineCommand({
238
302
  },
239
303
  async run() {
240
304
  const metas = await snapshotStore.list();
241
- consola.log(formatSnapshotList(metas));
305
+ console.log(formatSnapshotList(metas));
242
306
  },
243
307
  });
244
308
  const snapshotShowCommand = defineCommand({
@@ -256,11 +320,11 @@ const snapshotShowCommand = defineCommand({
256
320
  async run({ args }) {
257
321
  const snapshot = await snapshotStore.load(args.id);
258
322
  if (!snapshot) {
259
- consola.error(`Snapshot not found: ${pc.bold(args.id)}`);
323
+ ui.error(`Snapshot not found: ${ui.pc.bold(args.id)}`);
260
324
  process.exitCode = 1;
261
325
  return;
262
326
  }
263
- consola.log(formatSnapshotDetail(snapshot));
327
+ console.log(formatSnapshotDetail(snapshot));
264
328
  },
265
329
  });
266
330
  const snapshotDiffCommand = defineCommand({
@@ -283,18 +347,18 @@ const snapshotDiffCommand = defineCommand({
283
347
  async run({ args }) {
284
348
  const oldSnap = await snapshotStore.load(args.id1);
285
349
  if (!oldSnap) {
286
- consola.error(`Snapshot not found: ${pc.bold(args.id1)}`);
350
+ ui.error(`Snapshot not found: ${ui.pc.bold(args.id1)}`);
287
351
  process.exitCode = 1;
288
352
  return;
289
353
  }
290
354
  const newSnap = await snapshotStore.load(args.id2);
291
355
  if (!newSnap) {
292
- consola.error(`Snapshot not found: ${pc.bold(args.id2)}`);
356
+ ui.error(`Snapshot not found: ${ui.pc.bold(args.id2)}`);
293
357
  process.exitCode = 1;
294
358
  return;
295
359
  }
296
360
  const diff = diffSnapshots(oldSnap, newSnap);
297
- consola.log(formatSnapshotDiff(diff));
361
+ console.log(formatSnapshotDiff(diff));
298
362
  },
299
363
  });
300
364
  const snapshotCommand = defineCommand({
@@ -308,6 +372,7 @@ const snapshotCommand = defineCommand({
308
372
  diff: snapshotDiffCommand,
309
373
  },
310
374
  });
375
+ // ── export-icons ────────────────────────────────────────────────────
311
376
  const exportIconsCommand = defineCommand({
312
377
  meta: {
313
378
  name: "export-icons",
@@ -330,26 +395,34 @@ const exportIconsCommand = defineCommand({
330
395
  async run({ args }) {
331
396
  const outputDir = args.output || join(homedir(), ".otter", "icons");
332
397
  const size = parseInt(args.size || "128", 10);
333
- consola.start(`Exporting app icons to ${pc.bold(outputDir)}...\n`);
398
+ ui.banner(CLI_VERSION);
399
+ console.log(`Exporting app icons to ${ui.pc.bold(outputDir)}...\n`);
334
400
  const results = await exportIcons({
335
401
  outputDir,
336
402
  size,
337
403
  onProgress: (result) => {
338
404
  if (result.success) {
339
- consola.log(` ${pc.green("✓")} ${result.appName}`);
405
+ console.log(`${ui.S.success} ${result.appName}`);
340
406
  }
341
407
  else {
342
- consola.log(` ${pc.yellow("⚠")} ${result.appName}: ${pc.dim(result.error ?? "unknown error")}`);
408
+ console.log(`${ui.S.warning} ${result.appName}: ${ui.pc.dim(result.error ?? "unknown error")}`);
343
409
  }
344
410
  },
345
411
  });
346
412
  const succeeded = results.filter((r) => r.success).length;
347
413
  const failed = results.filter((r) => !r.success).length;
348
- consola.success(`\nExported ${pc.bold(String(succeeded))} icons` +
349
- (failed > 0 ? ` (${pc.yellow(String(failed))} skipped)` : ""));
350
- consola.info(`Output: ${pc.dim(outputDir)}`);
414
+ ui.blank();
415
+ ui.box({
416
+ title: "Export complete",
417
+ lines: [
418
+ `${succeeded} icons exported` +
419
+ (failed > 0 ? ` ${ui.pc.yellow(`${failed} skipped`)}` : ""),
420
+ ui.pc.dim(`Output: ${outputDir}`),
421
+ ],
422
+ });
351
423
  },
352
424
  });
425
+ // ── login ───────────────────────────────────────────────────────────
353
426
  const loginCommand = defineCommand({
354
427
  meta: {
355
428
  name: "login",
@@ -364,25 +437,28 @@ const loginCommand = defineCommand({
364
437
  },
365
438
  async run({ args }) {
366
439
  const configManager = getConfigManager();
367
- consola.start("Starting login flow...\n");
440
+ ui.banner(CLI_VERSION);
441
+ const spinner = yoctoSpinner({ text: "Starting login flow..." }).start();
368
442
  const result = await executeLogin(configManager, { dev: args.dev }, {
369
443
  onPortReady: (port) => {
370
- consola.info(`Local server listening on port ${pc.bold(String(port))}`);
444
+ spinner.text = `Local server listening on port ${ui.pc.bold(String(port))}`;
371
445
  },
372
446
  onBrowserOpen: (url) => {
373
- consola.info(`Opening browser: ${pc.dim(url)}`);
374
- consola.info(pc.dim("Waiting for you to connect in the browser (30s timeout)..."));
447
+ spinner.text = `Waiting for browser connection...`;
448
+ ui.info(`Opening browser: ${ui.pc.dim(url)}`);
449
+ console.log(`${ui.pc.dim("Waiting for you to connect in the browser (30s timeout)...")}`);
375
450
  },
376
451
  onSuccess: (token) => {
377
- consola.success(`\nConnected! Token saved.`);
378
- consola.info(`Token: ${pc.dim(token.slice(0, 8))}...`);
379
- consola.info(`\nRun ${pc.bold("otter backup")} to create your first backup.`);
452
+ spinner.success("Connected! Token saved.");
453
+ ui.blank();
454
+ ui.info(`Token: ${ui.pc.dim(token.slice(0, 8))}...`);
455
+ ui.info(`Run ${ui.pc.bold("otter backup")} to create your first backup.`);
380
456
  },
381
- onError: (error) => {
382
- consola.error(`\nLogin failed: ${error}`);
457
+ onError: (err) => {
458
+ spinner.error(`Login failed: ${err}`);
383
459
  },
384
460
  onTimeout: () => {
385
- consola.warn("\nLogin timed out (30s). Please try again.");
461
+ spinner.warning("Login timed out (30s). Please try again.");
386
462
  },
387
463
  });
388
464
  if (!result.success) {
@@ -390,10 +466,11 @@ const loginCommand = defineCommand({
390
466
  }
391
467
  },
392
468
  });
469
+ // ── main ────────────────────────────────────────────────────────────
393
470
  export const main = defineCommand({
394
471
  meta: {
395
472
  name: "otter",
396
- version: "1.0.3",
473
+ version: CLI_VERSION,
397
474
  description: "Backup and restore your Mac development environment configuration",
398
475
  },
399
476
  subCommands: {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,17 @@ import type { CollectorCategory, CollectorResult } from "@otter/core";
8
8
  * to a deterministic R2 URL (SHA-256 hash of app name).
9
9
  */
10
10
  export declare class ApplicationsCollector extends BaseCollector {
11
- private readonly appsDir;
11
+ private readonly systemAppsDir;
12
12
  private readonly iconBaseUrl?;
13
- constructor(homeDir: string, appsDir?: string, iconBaseUrl?: string | undefined);
13
+ private readonly userAppsDir;
14
+ constructor(homeDir: string, systemAppsDir?: string, iconBaseUrl?: string | undefined, userAppsDir?: string);
15
+ /** Overridable for testing — executes a shell command and returns stdout */
16
+ _execCommand: (cmd: string) => Promise<string>;
14
17
  readonly id = "applications";
15
18
  readonly label = "Installed Applications";
16
19
  readonly category: CollectorCategory;
17
20
  collect(): Promise<CollectorResult>;
21
+ private collectFromDir;
22
+ private getAppVersion;
18
23
  }
19
24
  //# sourceMappingURL=applications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/collectors/applications.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EAEhB,MAAM,aAAa,CAAC;AAQrB;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IAGpD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAF7B,OAAO,EAAE,MAAM,EACE,OAAO,GAAE,MAAwB,EACjC,WAAW,CAAC,EAAE,MAAM,YAAA;IAKvC,QAAQ,CAAC,EAAE,kBAAkB;IAC7B,QAAQ,CAAC,KAAK,4BAA4B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAiB;IAE/C,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;CA0B1C"}
1
+ {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/collectors/applications.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EAEhB,MAAM,aAAa,CAAC;AAUrB;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IAKpD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAL/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGnC,OAAO,EAAE,MAAM,EACE,aAAa,GAAE,MAAwB,EACvC,WAAW,CAAC,EAAE,MAAM,YAAA,EACrC,WAAW,CAAC,EAAE,MAAM;IAMtB,4EAA4E;IAC5E,YAAY,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAGjD;IAEF,QAAQ,CAAC,EAAE,kBAAkB;IAC7B,QAAQ,CAAC,KAAK,4BAA4B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAiB;IAE/C,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;YAa3B,cAAc;YAiCd,aAAa;CAe5B"}