@kamaras/venpm 0.1.0 → 0.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 (101) hide show
  1. package/README.md +163 -24
  2. package/dist/cli/completions.d.ts +3 -0
  3. package/dist/cli/completions.d.ts.map +1 -0
  4. package/dist/cli/completions.js +78 -0
  5. package/dist/cli/completions.js.map +1 -0
  6. package/dist/cli/config-cmd.d.ts.map +1 -1
  7. package/dist/cli/config-cmd.js +31 -22
  8. package/dist/cli/config-cmd.js.map +1 -1
  9. package/dist/cli/context.d.ts +1 -4
  10. package/dist/cli/context.d.ts.map +1 -1
  11. package/dist/cli/context.js +28 -7
  12. package/dist/cli/context.js.map +1 -1
  13. package/dist/cli/create.d.ts.map +1 -1
  14. package/dist/cli/create.js +22 -32
  15. package/dist/cli/create.js.map +1 -1
  16. package/dist/cli/doctor.d.ts.map +1 -1
  17. package/dist/cli/doctor.js +37 -23
  18. package/dist/cli/doctor.js.map +1 -1
  19. package/dist/cli/first-run.d.ts +4 -0
  20. package/dist/cli/first-run.d.ts.map +1 -0
  21. package/dist/cli/first-run.js +51 -0
  22. package/dist/cli/first-run.js.map +1 -0
  23. package/dist/cli/help.d.ts +3 -0
  24. package/dist/cli/help.d.ts.map +1 -0
  25. package/dist/cli/help.js +42 -0
  26. package/dist/cli/help.js.map +1 -0
  27. package/dist/cli/info.d.ts.map +1 -1
  28. package/dist/cli/info.js +48 -53
  29. package/dist/cli/info.js.map +1 -1
  30. package/dist/cli/install.d.ts.map +1 -1
  31. package/dist/cli/install.js +53 -68
  32. package/dist/cli/install.js.map +1 -1
  33. package/dist/cli/list.d.ts.map +1 -1
  34. package/dist/cli/list.js +20 -20
  35. package/dist/cli/list.js.map +1 -1
  36. package/dist/cli/rebuild.js +37 -34
  37. package/dist/cli/rebuild.js.map +1 -1
  38. package/dist/cli/repo.d.ts.map +1 -1
  39. package/dist/cli/repo.js +22 -32
  40. package/dist/cli/repo.js.map +1 -1
  41. package/dist/cli/search.d.ts.map +1 -1
  42. package/dist/cli/search.js +19 -20
  43. package/dist/cli/search.js.map +1 -1
  44. package/dist/cli/uninstall.d.ts.map +1 -1
  45. package/dist/cli/uninstall.js +17 -20
  46. package/dist/cli/uninstall.js.map +1 -1
  47. package/dist/cli/update.d.ts.map +1 -1
  48. package/dist/cli/update.js +28 -40
  49. package/dist/cli/update.js.map +1 -1
  50. package/dist/cli/validate.d.ts.map +1 -1
  51. package/dist/cli/validate.js +14 -21
  52. package/dist/cli/validate.js.map +1 -1
  53. package/dist/core/ansi.d.ts +14 -0
  54. package/dist/core/ansi.d.ts.map +1 -0
  55. package/dist/core/ansi.js +36 -0
  56. package/dist/core/ansi.js.map +1 -0
  57. package/dist/core/builder.d.ts +1 -0
  58. package/dist/core/builder.d.ts.map +1 -1
  59. package/dist/core/builder.js +18 -7
  60. package/dist/core/builder.js.map +1 -1
  61. package/dist/core/errors.d.ts +36 -0
  62. package/dist/core/errors.d.ts.map +1 -0
  63. package/dist/core/errors.js +70 -0
  64. package/dist/core/errors.js.map +1 -0
  65. package/dist/core/fuzzy.d.ts +3 -0
  66. package/dist/core/fuzzy.d.ts.map +1 -0
  67. package/dist/core/fuzzy.js +30 -0
  68. package/dist/core/fuzzy.js.map +1 -0
  69. package/dist/core/json-renderer.d.ts +5 -0
  70. package/dist/core/json-renderer.d.ts.map +1 -0
  71. package/dist/core/json-renderer.js +48 -0
  72. package/dist/core/json-renderer.js.map +1 -0
  73. package/dist/core/json.d.ts +5 -3
  74. package/dist/core/json.d.ts.map +1 -1
  75. package/dist/core/json.js +8 -4
  76. package/dist/core/json.js.map +1 -1
  77. package/dist/core/progress.d.ts +11 -0
  78. package/dist/core/progress.d.ts.map +1 -0
  79. package/dist/core/progress.js +53 -0
  80. package/dist/core/progress.js.map +1 -0
  81. package/dist/core/prompt.d.ts +1 -0
  82. package/dist/core/prompt.d.ts.map +1 -1
  83. package/dist/core/prompt.js +73 -4
  84. package/dist/core/prompt.js.map +1 -1
  85. package/dist/core/renderer.d.ts +13 -0
  86. package/dist/core/renderer.d.ts.map +1 -0
  87. package/dist/core/renderer.js +157 -0
  88. package/dist/core/renderer.js.map +1 -0
  89. package/dist/core/stream-renderer.d.ts +5 -0
  90. package/dist/core/stream-renderer.d.ts.map +1 -0
  91. package/dist/core/stream-renderer.js +71 -0
  92. package/dist/core/stream-renderer.js.map +1 -0
  93. package/dist/core/types.d.ts +48 -8
  94. package/dist/core/types.d.ts.map +1 -1
  95. package/dist/index.js +21 -2
  96. package/dist/index.js.map +1 -1
  97. package/package.json +1 -1
  98. package/dist/core/log.d.ts +0 -8
  99. package/dist/core/log.d.ts.map +0 -1
  100. package/dist/core/log.js +0 -24
  101. package/dist/core/log.js.map +0 -1
@@ -8,11 +8,12 @@ import { fetchPlugin, fetchViaLocal } from "../core/fetcher.js";
8
8
  import { buildAndDeploy } from "../core/builder.js";
9
9
  import { detectVencordPath, detectDiscordBinary } from "../core/detect.js";
10
10
  import { getConfigPath, getLockfilePath } from "../core/paths.js";
11
- import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
11
+ import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
12
+ import { findCandidates } from "../core/fuzzy.js";
12
13
  import { createRealIOContext } from "./context.js";
13
14
  // ─── Public API ───────────────────────────────────────────────────────────────
14
15
  export async function executeInstall(ctx, pluginName, options) {
15
- const { fs, http, git, shell, prompter, logger } = ctx;
16
+ const { fs, http, git, shell, prompter, renderer } = ctx;
16
17
  // 1. Load config and lockfile
17
18
  const configPath = options.config ?? getConfigPath();
18
19
  const lockfilePath = getLockfilePath();
@@ -21,13 +22,9 @@ export async function executeInstall(ctx, pluginName, options) {
21
22
  // 2. Resolve Vencord path
22
23
  const vencordPath = config.vencord.path ?? await detectVencordPath(fs);
23
24
  if (!vencordPath) {
24
- if (options.json) {
25
- process.exitCode = 1;
26
- writeJson(jsonError("Could not find Vencord source path. Set vencord.path in config or VENPM_VENCORD_PATH env var."));
27
- return;
28
- }
29
- logger.error("Could not find Vencord source path. Set vencord.path in config or VENPM_VENCORD_PATH env var.");
30
- process.exitCode = 1;
25
+ renderer.error(makeError(ErrorCode.VENCORD_NOT_FOUND, "Could not find Vencord source path. Set vencord.path in config or VENPM_VENCORD_PATH env var."));
26
+ renderer.finish(false);
27
+ process.exitCode = exitCodeForError(ErrorCode.VENCORD_NOT_FOUND);
31
28
  return;
32
29
  }
33
30
  const userpluginDir = join(vencordPath, "src", "userplugins");
@@ -35,7 +32,7 @@ export async function executeInstall(ctx, pluginName, options) {
35
32
  if (options.local) {
36
33
  const localPath = options.local;
37
34
  const dest = join(userpluginDir, pluginName);
38
- logger.info(`Symlinking ${localPath} → ${dest}`);
35
+ renderer.text(`Symlinking ${localPath} → ${dest}`);
39
36
  await fetchViaLocal(fs, localPath, dest);
40
37
  lockfile = addInstalled(lockfile, pluginName, {
41
38
  version: "local",
@@ -45,43 +42,39 @@ export async function executeInstall(ctx, pluginName, options) {
45
42
  installed_at: new Date().toISOString(),
46
43
  });
47
44
  await saveLockfile(fs, lockfilePath, lockfile);
48
- if (options.json) {
49
- writeJson(jsonSuccess({ installed: [{ name: pluginName, version: "local", method: "local" }], warnings: [] }));
50
- return;
51
- }
52
- logger.success(`Installed ${pluginName} from local path`);
45
+ renderer.success(`Installed ${pluginName} from local path`);
46
+ renderer.finish(true, { installed: [{ name: pluginName, version: "local", method: "local" }], warnings: [] });
53
47
  return;
54
48
  }
55
49
  // 4. Fetch all indexes (with cache)
50
+ const p = renderer.progress("fetch-indexes", "Fetching indexes...");
56
51
  const cache = await loadCache(fs);
57
52
  const { results: fetchedIndexes, updatedCache } = await fetchAllIndexes(http, config.repos, { cache });
58
53
  await saveCache(fs, updatedCache);
59
54
  const validIndexes = fetchedIndexes.filter(fi => fi.index !== undefined);
60
- for (const fi of fetchedIndexes) {
61
- if (fi.error) {
62
- logger.warn(`Failed to fetch index from repo "${fi.repoName}": ${fi.error}`);
63
- }
55
+ const fetchErrors = fetchedIndexes.filter(fi => fi.error);
56
+ p.succeed(`${validIndexes.length} repo(s) fetched`);
57
+ for (const fi of fetchErrors) {
58
+ renderer.warn(`Failed to fetch index from repo "${fi.repoName}": ${fi.error}`);
64
59
  }
65
60
  // 5. Resolve plugin
66
61
  const match = resolvePlugin(fetchedIndexes, pluginName, options.from);
67
62
  if (!match) {
63
+ const allPluginNames = fetchedIndexes.flatMap(fi => Object.keys(fi.index?.plugins ?? {}));
64
+ const candidates = findCandidates(pluginName, allPluginNames);
68
65
  const msg = options.from
69
66
  ? `Plugin "${pluginName}" not found in repo "${options.from}"`
70
67
  : `Plugin "${pluginName}" not found in any configured repo`;
71
- if (options.json) {
72
- process.exitCode = 1;
73
- writeJson(jsonError(msg));
74
- return;
75
- }
76
- logger.error(msg);
77
- process.exitCode = 1;
68
+ renderer.error(makeError(ErrorCode.PLUGIN_NOT_FOUND, msg, { candidates }));
69
+ renderer.finish(false);
70
+ process.exitCode = exitCodeForError(ErrorCode.PLUGIN_NOT_FOUND);
78
71
  return;
79
72
  }
80
73
  // Check for multiple matches (without --from, warn if plugin appears in multiple repos)
81
74
  if (!options.from) {
82
75
  const allMatches = fetchedIndexes.filter(fi => fi.index?.plugins[pluginName]);
83
76
  if (allMatches.length > 1) {
84
- logger.warn(`Plugin "${pluginName}" found in multiple repos: ${allMatches.map(fi => fi.repoName).join(", ")}. ` +
77
+ renderer.warn(`Plugin "${pluginName}" found in multiple repos: ${allMatches.map(fi => fi.repoName).join(", ")}. ` +
85
78
  `Using "${match.repoName}". Use --from <repo> to specify.`);
86
79
  }
87
80
  }
@@ -106,41 +99,44 @@ export async function executeInstall(ctx, pluginName, options) {
106
99
  }
107
100
  catch (err) {
108
101
  if (err instanceof ResolverError) {
109
- if (options.json) {
110
- process.exitCode = 1;
111
- writeJson(jsonError(err.message));
112
- return;
113
- }
114
- logger.error(err.message);
115
- process.exitCode = 1;
102
+ renderer.error(makeError(ErrorCode.CIRCULAR_DEPENDENCY, err.message));
103
+ renderer.finish(false);
104
+ process.exitCode = exitCodeForError(ErrorCode.CIRCULAR_DEPENDENCY);
116
105
  return;
117
106
  }
118
107
  throw err;
119
108
  }
120
109
  if (plan.entries.length === 0) {
121
- logger.info(`Plugin "${pluginName}" is already installed.`);
110
+ renderer.text(`Plugin "${pluginName}" is already installed.`);
111
+ renderer.finish(true, { installed: [], warnings: [] });
122
112
  return;
123
113
  }
124
114
  // 7. Show plan and confirm
125
- logger.info(`Install plan:`);
126
- for (const entry of plan.entries) {
127
- const depLabel = entry.isDependency ? " (dependency)" : "";
128
- logger.info(` ${entry.name}@${entry.version} via ${entry.method}${depLabel}`);
129
- }
115
+ renderer.heading("Install plan");
116
+ renderer.table(["Plugin", "Version", "Method", "Type"], plan.entries.map(entry => [
117
+ entry.name,
118
+ entry.version,
119
+ entry.method,
120
+ entry.isDependency ? "dependency" : "direct",
121
+ ]));
130
122
  // Warn about missing optional dependencies
123
+ const warnings = [];
131
124
  if (plan.missingOptional?.length) {
132
- logger.warn(`Recommended plugins not installed: ${plan.missingOptional.join(", ")}`);
133
- logger.info(` Install with: venpm install ${plan.missingOptional.join(" ")}`);
125
+ const warnMsg = `Recommended plugins not installed: ${plan.missingOptional.join(", ")}`;
126
+ renderer.warn(warnMsg);
127
+ renderer.text(` Install with: venpm install ${plan.missingOptional.join(" ")}`);
128
+ warnings.push(warnMsg);
134
129
  }
135
130
  const confirmed = await prompter.confirm(`Proceed with installation?`, true);
136
131
  if (!confirmed) {
137
- logger.info("Installation cancelled.");
132
+ renderer.text("Installation cancelled.");
133
+ renderer.finish(false);
138
134
  return;
139
135
  }
140
136
  // 8. Fetch each entry and update lockfile
141
137
  const installedEntries = [];
142
138
  for (const entry of plan.entries) {
143
- logger.info(`Installing ${entry.name}@${entry.version} via ${entry.method}...`);
139
+ const ep = renderer.progress(`install-${entry.name}`, `Installing ${entry.name}@${entry.version} via ${entry.method}...`);
144
140
  try {
145
141
  const result = await fetchPlugin(entry, userpluginDir, { fs, git, http });
146
142
  lockfile = addInstalled(lockfile, entry.name, {
@@ -153,31 +149,20 @@ export async function executeInstall(ctx, pluginName, options) {
153
149
  path: result.path,
154
150
  });
155
151
  installedEntries.push({ name: entry.name, version: entry.version, method: result.method });
152
+ ep.succeed(`${entry.name}@${entry.version}`);
156
153
  }
157
154
  catch (err) {
158
- const msg = `Failed to install ${entry.name}: ${err instanceof Error ? err.message : err}`;
159
- if (options.json) {
160
- process.exitCode = 1;
161
- writeJson(jsonError(msg));
162
- return;
163
- }
164
- logger.error(msg);
165
- process.exitCode = 1;
155
+ ep.fail(`${entry.name}: ${err instanceof Error ? err.message : err}`);
156
+ renderer.error(makeError(ErrorCode.BUILD_FAILED, `Failed to install ${entry.name}: ${err instanceof Error ? err.message : err}`));
157
+ renderer.finish(false);
158
+ process.exitCode = exitCodeForError(ErrorCode.BUILD_FAILED);
166
159
  return;
167
160
  }
168
161
  }
169
162
  // 9. Save lockfile
170
163
  await saveLockfile(fs, lockfilePath, lockfile);
171
- if (options.json) {
172
- writeJson(jsonSuccess({
173
- installed: installedEntries,
174
- warnings: plan.missingOptional?.length
175
- ? [`Recommended plugins not installed: ${plan.missingOptional.join(", ")}`]
176
- : [],
177
- }));
178
- return;
179
- }
180
- logger.success(`Successfully installed ${pluginName}`);
164
+ renderer.success(`Successfully installed ${pluginName}`);
165
+ renderer.finish(true, { installed: installedEntries, warnings });
181
166
  // 10. Handle rebuild
182
167
  const effectiveRebuildMode = resolveRebuildMode(options, config.rebuild);
183
168
  if (effectiveRebuildMode === "always" || options.rebuild) {
@@ -202,8 +187,8 @@ function resolveRebuildMode(options, configMode) {
202
187
  return configMode;
203
188
  }
204
189
  async function runRebuild(ctx, vencordPath) {
205
- const { fs, shell, logger } = ctx;
206
- logger.info("Rebuilding Vencord...");
190
+ const { fs, shell, renderer } = ctx;
191
+ const p = renderer.progress("rebuild", "Rebuilding Vencord...");
207
192
  const discordBinary = await detectDiscordBinary(fs);
208
193
  try {
209
194
  const result = await buildAndDeploy(fs, shell, vencordPath, {
@@ -211,14 +196,14 @@ async function runRebuild(ctx, vencordPath) {
211
196
  discordBinary: discordBinary ?? undefined,
212
197
  });
213
198
  if (result.deployed) {
214
- logger.success(`Deployed to ${result.deployPath}`);
199
+ p.succeed(`Deployed to ${result.deployPath}`);
215
200
  }
216
201
  else {
217
- logger.info("Build complete (deploy path not found, skipped deploy)");
202
+ p.succeed("Build complete (deploy path not found, skipped deploy)");
218
203
  }
219
204
  }
220
205
  catch (err) {
221
- logger.error(`Rebuild failed: ${err instanceof Error ? err.message : String(err)}`);
206
+ p.fail(`Rebuild failed: ${err instanceof Error ? err.message : String(err)}`);
222
207
  }
223
208
  }
224
209
  // ─── CLI Registration ─────────────────────────────────────────────────────────
@@ -235,7 +220,7 @@ export function registerInstallCommand(program) {
235
220
  .option("--rebuild", "Force Vencord rebuild")
236
221
  .action(async (pluginName, opts) => {
237
222
  const globalOpts = program.opts();
238
- const ctx = createRealIOContext({ ...globalOpts });
223
+ const ctx = createRealIOContext(globalOpts);
239
224
  const options = {
240
225
  ...globalOpts,
241
226
  version: opts["version"],
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,GAAc,EACd,UAAkB,EAClB,OAAuB;IAEvB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEzD,8BAA8B;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IACrD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAEpD,0BAA0B;IAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,EAAE,+FAA+F,CAAC,CAAC,CAAC;QACxJ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO;IACX,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAE9D,iEAAiE;IACjE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,cAAc,SAAS,MAAM,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACzC,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE;YAC1C,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACzC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,aAAa,UAAU,kBAAkB,CAAC,CAAC;QAC5D,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9G,OAAO;IACX,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvG,MAAM,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAEpD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,oBAAoB;IACpB,MAAM,KAAK,GAAG,aAAa,CAAC,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI;YACpB,CAAC,CAAC,WAAW,UAAU,wBAAwB,OAAO,CAAC,IAAI,GAAG;YAC9D,CAAC,CAAC,WAAW,UAAU,oCAAoC,CAAC;QAChE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3E,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChE,OAAO;IACX,CAAC;IAED,wFAAwF;IACxF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CACT,WAAW,UAAU,8BAA8B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACnG,UAAU,KAAK,CAAC,QAAQ,kCAAkC,CAC7D,CAAC;QACN,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;IAE3C,IAAI,WAA0C,CAAC;IAC/C,IAAI,OAAO,CAAC,GAAG;QAAE,WAAW,GAAG,KAAK,CAAC;SAChC,IAAI,OAAO,CAAC,OAAO;QAAE,WAAW,GAAG,SAAS,CAAC;IAElD,MAAM,aAAa,GAAG,YAAY;SAC7B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAM,CAAC;SACpB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACD,IAAI,GAAG,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE;YAC5D,YAAY;YACZ,WAAW;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,IAAI;SACzB,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YAC/B,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACnE,OAAO;QACX,CAAC;QACD,MAAM,GAAG,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,WAAW,UAAU,yBAAyB,CAAC,CAAC;QAC9D,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;IACX,CAAC;IAED,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,CACV,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;KAC/C,CAAC,CACL,CAAC;IAEF,2CAA2C;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,sCAAsC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;IAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO;IACX,CAAC;IAED,0CAA0C;IAC1C,MAAM,gBAAgB,GAAwD,EAAE,CAAC;IACjF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,KAAK,CAAC,IAAI,EAAE,EAAE,cAAc,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1H,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1E,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;gBAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACtC,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3F,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACtE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,qBAAqB,KAAK,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5D,OAAO;QACX,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE/C,QAAQ,CAAC,OAAO,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjE,qBAAqB;IACrB,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzE,IAAI,oBAAoB,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;SAAM,IAAI,oBAAoB,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IACD,4CAA4C;AAChD,CAAC;AAED,iFAAiF;AAEjF,SAAS,kBAAkB,CAAC,OAAuB,EAAE,UAAuB;IACxE,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAc,EAAE,WAAmB;IACzD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YACxD,OAAO,EAAE,aAAa,KAAK,IAAI;YAC/B,aAAa,EAAE,aAAa,IAAI,SAAS;SAC5C,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC,CAAC,OAAO,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACnD,OAAO;SACF,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;SACvD,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;SACrD,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC;SAClC,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;SAC7C,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;SAC5C,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,IAA6B,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAiB,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAmB;YAC5B,GAAG,UAAU;YACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAuB;YAC9C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAuB;YACxC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAuB;YAC1C,GAAG,EAAE,IAAI,CAAC,KAAK,CAAwB;YACvC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAwB;YAC/C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,0CAA0C;YAC5E,OAAO,EAAE,IAAI,CAAC,SAAS,CAAwB;SAClD,CAAC;QACF,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjE,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B5F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS1D"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjE,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS1D"}
package/dist/cli/list.js CHANGED
@@ -1,32 +1,32 @@
1
1
  import { loadLockfile } from "../core/lockfile.js";
2
2
  import { getLockfilePath } from "../core/paths.js";
3
- import { jsonSuccess, writeJson } from "../core/json.js";
4
3
  import { createRealIOContext } from "./context.js";
5
4
  export async function executeList(ctx, options = {}) {
5
+ const { renderer } = ctx;
6
6
  const lockfile = await loadLockfile(ctx.fs, getLockfilePath());
7
7
  const installed = Object.entries(lockfile.installed);
8
- if (options.json) {
9
- writeJson(jsonSuccess({
10
- plugins: installed.map(([name, info]) => ({
11
- name,
12
- version: info.version,
13
- repo: info.repo,
14
- method: info.method,
15
- pinned: info.pinned,
16
- })),
17
- }));
18
- return;
19
- }
20
8
  if (installed.length === 0) {
21
- ctx.logger.info("No plugins installed");
9
+ renderer.text("No plugins installed");
10
+ renderer.finish(true, { plugins: [] });
22
11
  return;
23
12
  }
24
- ctx.logger.info(`Installed plugins (${installed.length}):\n`);
25
- for (const [name, info] of installed) {
26
- const pin = info.pinned ? " (pinned)" : "";
27
- const method = info.method === "local" ? " [local]" : "";
28
- ctx.logger.info(` ${name}@${info.version}${pin}${method} — from ${info.repo}`);
29
- }
13
+ renderer.heading(`Installed plugins (${installed.length})`);
14
+ renderer.table(["Name", "Version", "Repo", "Method", "Pinned"], installed.map(([name, info]) => [
15
+ name,
16
+ info.version,
17
+ info.repo,
18
+ info.method,
19
+ info.pinned ? "yes" : "no",
20
+ ]));
21
+ renderer.finish(true, {
22
+ plugins: installed.map(([name, info]) => ({
23
+ name,
24
+ version: info.version,
25
+ repo: info.repo,
26
+ method: info.method,
27
+ pinned: info.pinned,
28
+ })),
29
+ });
30
30
  }
31
31
  export function registerListCommand(program) {
32
32
  program
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAc,EAAE,UAAyB,EAAE;IACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,SAAS,CAAC,WAAW,CAAC;YAClB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI;gBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC,CAAC;SACN,CAAC,CAAC,CAAC;QACJ,OAAO;IACX,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACxC,OAAO;IACX,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,OAAO;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAiB,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAc,EAAE,UAAyB,EAAE;IACzE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAErD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,OAAO;IACX,CAAC;IAED,QAAQ,CAAC,OAAO,CAAC,sBAAsB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,QAAQ,CAAC,KAAK,CACV,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC/C,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI;QACJ,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;KAC7B,CAAC,CACL,CAAC;IAEF,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;KACN,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,OAAO;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAiB,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -2,71 +2,74 @@ import { loadConfig } from "../core/config.js";
2
2
  import { getConfigPath } from "../core/paths.js";
3
3
  import { detectVencordPath, detectDiscordBinary } from "../core/detect.js";
4
4
  import { buildAndDeploy } from "../core/builder.js";
5
- import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
5
+ import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
6
6
  import { createRealIOContext } from "./context.js";
7
7
  export function registerRebuildCommand(program) {
8
8
  program
9
9
  .command("rebuild")
10
10
  .description("Rebuild Vencord after plugin changes")
11
- .action(async () => {
11
+ .option("--no-restart", "Skip Discord restart without prompting")
12
+ .option("--restart", "Restart Discord without prompting")
13
+ .action(async (cmdOptions) => {
12
14
  const globalOpts = program.opts();
13
15
  const ctx = createRealIOContext(globalOpts);
16
+ const { renderer } = ctx;
14
17
  const configPath = globalOpts.config ?? getConfigPath();
15
18
  const config = await loadConfig(ctx.fs, configPath);
16
19
  // Resolve Vencord path
17
20
  const vencordPath = config.vencord.path ?? await detectVencordPath(ctx.fs);
18
21
  if (!vencordPath) {
19
- if (globalOpts.json) {
20
- writeJson(jsonError("Vencord path not found. Set vencord.path in config or $VENPM_VENCORD_PATH."));
21
- return;
22
- }
23
- ctx.logger.error("Vencord path not found. Set vencord.path in config or $VENPM_VENCORD_PATH.");
24
- process.exitCode = 1;
22
+ renderer.error(makeError(ErrorCode.VENCORD_NOT_FOUND, "Vencord path not found. Set vencord.path in config or $VENPM_VENCORD_PATH."));
23
+ renderer.finish(false);
24
+ process.exitCode = exitCodeForError(ErrorCode.VENCORD_NOT_FOUND);
25
25
  return;
26
26
  }
27
27
  // Resolve Discord binary for optional restart
28
28
  const discordBinary = config.discord.binary ?? await detectDiscordBinary(ctx.fs);
29
- // Determine restart behaviour
29
+ // Determine restart behaviour — explicit flags override config
30
30
  let shouldRestart = false;
31
- const restartMode = config.discord.restart;
32
- if (restartMode === "always" && discordBinary) {
33
- shouldRestart = true;
31
+ if (cmdOptions.noRestart) {
32
+ shouldRestart = false;
33
+ }
34
+ else if (cmdOptions.restart) {
35
+ shouldRestart = !!discordBinary;
34
36
  }
35
- else if (restartMode === "ask" && discordBinary) {
36
- shouldRestart = await ctx.prompter.confirm("Restart Discord after rebuild?", false);
37
+ else {
38
+ const restartMode = config.discord.restart;
39
+ if (restartMode === "always" && discordBinary) {
40
+ shouldRestart = true;
41
+ }
42
+ else if (restartMode === "ask" && discordBinary) {
43
+ shouldRestart = await ctx.prompter.confirm("Restart Discord after rebuild?", false);
44
+ }
37
45
  }
38
- ctx.logger.info(`Building Vencord at ${vencordPath}...`);
46
+ const p = renderer.progress("rebuild", `Building Vencord at ${vencordPath}...`);
39
47
  try {
40
48
  const result = await buildAndDeploy(ctx.fs, ctx.shell, vencordPath, {
41
49
  restart: shouldRestart,
42
50
  discordBinary: discordBinary ?? undefined,
43
51
  });
44
- if (globalOpts.json) {
45
- writeJson(jsonSuccess({
46
- built: true,
47
- deployed: result.deployed,
48
- restarted: shouldRestart && !!discordBinary,
49
- }));
50
- return;
51
- }
52
- ctx.logger.success("Build complete");
52
+ p.succeed("Build complete");
53
53
  if (result.deployed && result.deployPath) {
54
- ctx.logger.info(`Deployed to ${result.deployPath}`);
54
+ renderer.text(`Deployed to ${result.deployPath}`);
55
55
  }
56
56
  else if (!result.deployed) {
57
- ctx.logger.warn("Deploy target not found — skipped copy step");
57
+ renderer.warn("Deploy target not found — skipped copy step");
58
58
  }
59
- if (shouldRestart && discordBinary) {
60
- ctx.logger.info("Discord restarted");
59
+ if (result.restarted) {
60
+ renderer.text("Discord restarted");
61
61
  }
62
+ renderer.finish(true, {
63
+ built: true,
64
+ deployed: result.deployed,
65
+ restarted: result.restarted,
66
+ });
62
67
  }
63
68
  catch (err) {
64
- if (globalOpts.json) {
65
- writeJson(jsonError(`Build failed: ${err.message}`));
66
- return;
67
- }
68
- ctx.logger.error(`Build failed: ${err.message}`);
69
- process.exitCode = 1;
69
+ p.fail("Build failed");
70
+ renderer.error(makeError(ErrorCode.BUILD_FAILED, `Build failed: ${err.message}`));
71
+ renderer.finish(false);
72
+ process.exitCode = exitCodeForError(ErrorCode.BUILD_FAILED);
70
73
  return;
71
74
  }
72
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../../src/cli/rebuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../../src/cli/rebuild.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/cli/repo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG1D"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/cli/repo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F1D"}
package/dist/cli/repo.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { loadConfig, saveConfig } from "../core/config.js";
2
2
  import { getConfigPath } from "../core/paths.js";
3
- import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
3
+ import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
4
4
  import { createRealIOContext } from "./context.js";
5
5
  export function registerRepoCommand(program) {
6
6
  const repo = program
@@ -13,6 +13,7 @@ export function registerRepoCommand(program) {
13
13
  .action(async (url, options) => {
14
14
  const parentOpts = program.opts();
15
15
  const ctx = createRealIOContext(parentOpts);
16
+ const { renderer } = ctx;
16
17
  const configPath = parentOpts.config ?? getConfigPath();
17
18
  const config = await loadConfig(ctx.fs, configPath);
18
19
  let name = options.name;
@@ -26,21 +27,15 @@ export function registerRepoCommand(program) {
26
27
  }
27
28
  const existing = config.repos.find(r => r.name === name);
28
29
  if (existing) {
29
- if (parentOpts.json) {
30
- writeJson(jsonError(`Repository with name "${name}" already exists (${existing.url})`));
31
- return;
32
- }
33
- ctx.logger.error(`Repository with name "${name}" already exists (${existing.url})`);
34
- process.exitCode = 1;
30
+ renderer.error(makeError(ErrorCode.REPO_FETCH_FAILED, `Repository with name "${name}" already exists (${existing.url})`));
31
+ renderer.finish(false);
32
+ process.exitCode = exitCodeForError(ErrorCode.REPO_FETCH_FAILED);
35
33
  return;
36
34
  }
37
35
  config.repos.push({ name, url });
38
36
  await saveConfig(ctx.fs, configPath, config);
39
- if (parentOpts.json) {
40
- writeJson(jsonSuccess({ name, url }));
41
- return;
42
- }
43
- ctx.logger.success(`Added repository "${name}" → ${url}`);
37
+ renderer.success(`Added repository "${name}" → ${url}`);
38
+ renderer.finish(true, { name, url });
44
39
  });
45
40
  repo
46
41
  .command("remove <name>")
@@ -48,25 +43,23 @@ export function registerRepoCommand(program) {
48
43
  .action(async (name) => {
49
44
  const parentOpts = program.opts();
50
45
  const ctx = createRealIOContext(parentOpts);
46
+ const { renderer } = ctx;
51
47
  const configPath = parentOpts.config ?? getConfigPath();
52
48
  const config = await loadConfig(ctx.fs, configPath);
53
49
  const index = config.repos.findIndex(r => r.name === name);
54
50
  if (index === -1) {
55
- if (parentOpts.json) {
56
- writeJson(jsonError(`Repository "${name}" not found`));
57
- return;
58
- }
59
- ctx.logger.error(`Repository "${name}" not found`);
60
- process.exitCode = 1;
51
+ const repoNames = config.repos.map(r => r.name);
52
+ renderer.error(makeError(ErrorCode.REPO_FETCH_FAILED, `Repository "${name}" not found`, {
53
+ candidates: repoNames.length > 0 ? repoNames : undefined,
54
+ }));
55
+ renderer.finish(false);
56
+ process.exitCode = exitCodeForError(ErrorCode.REPO_FETCH_FAILED);
61
57
  return;
62
58
  }
63
59
  config.repos.splice(index, 1);
64
60
  await saveConfig(ctx.fs, configPath, config);
65
- if (parentOpts.json) {
66
- writeJson(jsonSuccess({ removed: name }));
67
- return;
68
- }
69
- ctx.logger.success(`Removed repository "${name}"`);
61
+ renderer.success(`Removed repository "${name}"`);
62
+ renderer.finish(true, { removed: name });
70
63
  });
71
64
  repo
72
65
  .command("list")
@@ -74,20 +67,17 @@ export function registerRepoCommand(program) {
74
67
  .action(async () => {
75
68
  const parentOpts = program.opts();
76
69
  const ctx = createRealIOContext(parentOpts);
70
+ const { renderer } = ctx;
77
71
  const configPath = parentOpts.config ?? getConfigPath();
78
72
  const config = await loadConfig(ctx.fs, configPath);
79
- if (parentOpts.json) {
80
- writeJson(jsonSuccess({ repos: config.repos.map(r => ({ name: r.name, url: r.url })) }));
81
- return;
82
- }
83
73
  if (config.repos.length === 0) {
84
- ctx.logger.info("No repositories configured");
74
+ renderer.text("No repositories configured");
75
+ renderer.finish(true, { repos: [] });
85
76
  return;
86
77
  }
87
- ctx.logger.info(`Configured repositories (${config.repos.length}):\n`);
88
- for (const r of config.repos) {
89
- ctx.logger.info(` ${r.name} ${r.url}`);
90
- }
78
+ renderer.heading(`Configured repositories (${config.repos.length})`);
79
+ renderer.table(["Name", "URL"], config.repos.map(r => [r.name, r.url]));
80
+ renderer.finish(true, { repos: config.repos.map(r => ({ name: r.name, url: r.url })) });
91
81
  });
92
82
  }
93
83
  //# sourceMappingURL=repo.js.map