@devbie/newbie-cli 1.9.1 → 1.10.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 (73) hide show
  1. package/README.md +79 -103
  2. package/dist/assemble/modules-copy.js +1 -1
  3. package/dist/assemble/modules-copy.js.map +1 -1
  4. package/dist/assemble/modules.js +1 -1
  5. package/dist/assemble/schema.js +1 -1
  6. package/dist/commands/create.js +1 -1
  7. package/dist/commands/create.js.map +1 -1
  8. package/dist/commands/doctor.d.ts +4 -1
  9. package/dist/commands/doctor.js +36 -16
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/modules/default.d.ts +5 -0
  12. package/dist/commands/{default.js → modules/default.js} +64 -13
  13. package/dist/commands/modules/default.js.map +1 -0
  14. package/dist/commands/modules/install.d.ts +7 -0
  15. package/dist/commands/modules/install.js +121 -0
  16. package/dist/commands/modules/install.js.map +1 -0
  17. package/dist/commands/modules/lint.d.ts +3 -0
  18. package/dist/commands/{dev → modules}/lint.js +12 -11
  19. package/dist/commands/modules/lint.js.map +1 -0
  20. package/dist/commands/modules/remove.d.ts +6 -0
  21. package/dist/commands/modules/remove.js +47 -0
  22. package/dist/commands/modules/remove.js.map +1 -0
  23. package/dist/commands/modules/update.d.ts +8 -0
  24. package/dist/commands/{update.js → modules/update.js} +68 -27
  25. package/dist/commands/modules/update.js.map +1 -0
  26. package/dist/commands/modules/watch.d.ts +6 -0
  27. package/dist/commands/{watch.js → modules/watch.js} +16 -8
  28. package/dist/commands/modules/watch.js.map +1 -0
  29. package/dist/commands/shared.d.ts +1 -0
  30. package/dist/commands/shared.js +1 -1
  31. package/dist/commands/shared.js.map +1 -1
  32. package/dist/commands/template/sync.d.ts +7 -0
  33. package/dist/commands/{sync-template.js → template/sync.js} +10 -19
  34. package/dist/commands/template/sync.js.map +1 -0
  35. package/dist/core/deploy-compose.js +1 -1
  36. package/dist/index.d.ts +2 -1
  37. package/dist/index.js +3 -179
  38. package/dist/index.js.map +1 -1
  39. package/dist/lib/module-selector.d.ts +1 -0
  40. package/dist/lib/module-selector.js +13 -0
  41. package/dist/lib/module-selector.js.map +1 -0
  42. package/dist/lib/sink.d.ts +10 -1
  43. package/dist/lib/sink.js +42 -3
  44. package/dist/lib/sink.js.map +1 -1
  45. package/dist/program.d.ts +3 -0
  46. package/dist/program.js +166 -0
  47. package/dist/program.js.map +1 -0
  48. package/package.json +1 -1
  49. package/dist/commands/agent.d.ts +0 -5
  50. package/dist/commands/agent.js +0 -223
  51. package/dist/commands/agent.js.map +0 -1
  52. package/dist/commands/apply.d.ts +0 -7
  53. package/dist/commands/apply.js +0 -61
  54. package/dist/commands/apply.js.map +0 -1
  55. package/dist/commands/assemble.d.ts +0 -5
  56. package/dist/commands/assemble.js +0 -66
  57. package/dist/commands/assemble.js.map +0 -1
  58. package/dist/commands/config.d.ts +0 -7
  59. package/dist/commands/config.js +0 -120
  60. package/dist/commands/config.js.map +0 -1
  61. package/dist/commands/default.d.ts +0 -2
  62. package/dist/commands/default.js.map +0 -1
  63. package/dist/commands/dev/lint.d.ts +0 -3
  64. package/dist/commands/dev/lint.js.map +0 -1
  65. package/dist/commands/install.d.ts +0 -4
  66. package/dist/commands/install.js +0 -48
  67. package/dist/commands/install.js.map +0 -1
  68. package/dist/commands/sync-template.d.ts +0 -8
  69. package/dist/commands/sync-template.js.map +0 -1
  70. package/dist/commands/update.d.ts +0 -8
  71. package/dist/commands/update.js.map +0 -1
  72. package/dist/commands/watch.d.ts +0 -5
  73. package/dist/commands/watch.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runInstall = runInstall;
4
+ const prompts_1 = require("@inquirer/prompts");
5
+ const colorette_1 = require("colorette");
6
+ const pipeline_1 = require("../../assemble/pipeline");
7
+ const paths_1 = require("../../constants/paths");
8
+ const modules_state_1 = require("../../core/modules-state");
9
+ const errors_1 = require("../../lib/errors");
10
+ const registry_1 = require("../../lib/registry");
11
+ const shared_1 = require("../shared");
12
+ async function runInstall(options) {
13
+ const keys = options.keys ?? [];
14
+ if (options.check) {
15
+ if (keys.length > 0) {
16
+ throw new errors_1.CliError("`modules install --check` inspects the declared module set and does not accept module keys.");
17
+ }
18
+ await runInstallCheck(options);
19
+ return;
20
+ }
21
+ if (keys.length > 0) {
22
+ await runInstallKeys(options, keys);
23
+ return;
24
+ }
25
+ await runInstallReconcile(options);
26
+ }
27
+ async function runInstallCheck(options) {
28
+ const { ctx } = await (0, shared_1.createContext)(options, { check: true, fetch: false });
29
+ const plan = await (0, pipeline_1.planReconcile)(ctx);
30
+ if (plan.installed.length > 0 || plan.uninstalled.length > 0) {
31
+ const lines = [
32
+ ...plan.installed.map((key) => ` - ${key}: copy missing from src/modules`),
33
+ ...plan.uninstalled.map((key) => ` - ${key}: extra copy not declared in modules.json`),
34
+ ];
35
+ throw new errors_1.CliError(`Module copies are out of sync with modules.json:\n${lines.join("\n")}\nRun \`newbie modules install\`.`);
36
+ }
37
+ const declared = (0, modules_state_1.moduleKeys)(ctx.state);
38
+ const undeclaredDependencies = plan.enabledKeys.filter((key) => !declared.includes(key));
39
+ if (undeclaredDependencies.length > 0) {
40
+ throw new errors_1.CliError(`modules.json is missing module(s) required by the enabled set: ${undeclaredDependencies.join(", ")}. ` +
41
+ "Run `newbie modules install` to declare them.");
42
+ }
43
+ await (0, pipeline_1.applyPlanned)(ctx, plan);
44
+ const findings = ctx.sink.findings.filter(isCountedFinding);
45
+ if (findings.length === 0) {
46
+ console.info((0, colorette_1.green)((0, colorette_1.bold)("✓ Module copies and generated wiring match modules.json.")));
47
+ return;
48
+ }
49
+ for (const finding of findings) {
50
+ const detail = finding.kind === "action" ? finding.detail : finding.kind;
51
+ console.info(` - ${finding.path}: ${detail}`);
52
+ }
53
+ throw new errors_1.CliError(`${findings.length} generated file(s) drift from the installed module set. ` +
54
+ "Run `newbie modules install` to regenerate them.");
55
+ }
56
+ function isCountedFinding(finding) {
57
+ if (finding.path === paths_1.ENV_PATH)
58
+ return false;
59
+ if (finding.kind === "action" && finding.detail === "prisma generate")
60
+ return false;
61
+ return true;
62
+ }
63
+ async function runInstallKeys(options, keys) {
64
+ const { ctx } = await (0, shared_1.createContext)(options, { fetch: true });
65
+ const registryModules = await (0, registry_1.listRegistryModules)(ctx.registry.root);
66
+ const known = new Set(registryModules.map((entry) => entry.key));
67
+ const unknown = keys.filter((key) => !known.has(key));
68
+ if (unknown.length > 0) {
69
+ throw new errors_1.CliError(`Unknown module(s): ${unknown.join(", ")}. Available modules: ${[...known].join(", ")}`);
70
+ }
71
+ const deprecated = (0, registry_1.deprecatedNoticesOf)(registryModules);
72
+ const blocked = keys.filter((key) => deprecated.has(key));
73
+ if (blocked.length > 0) {
74
+ throw new errors_1.CliError(`Cannot install deprecated module(s): ${blocked.map((key) => `'${key}' (${deprecated.get(key)})`).join(", ")}`);
75
+ }
76
+ const next = [...new Set([...(0, modules_state_1.moduleKeys)(ctx.state), ...keys])];
77
+ await (0, pipeline_1.applyModuleKeys)(ctx, next);
78
+ ctx.issues.assertEmpty();
79
+ console.info((0, colorette_1.bold)((0, colorette_1.green)("\n🍺 C O M P L E T E\n")));
80
+ }
81
+ async function runInstallReconcile(options) {
82
+ const { ctx } = await (0, shared_1.createContext)(options, { fetch: true });
83
+ const plan = await (0, pipeline_1.planReconcile)(ctx);
84
+ const { installed, uninstalled, closureAdded } = plan;
85
+ for (const addition of closureAdded ?? []) {
86
+ console.info((0, colorette_1.cyan)(`[info] ${addition.key} is required by ${addition.requiredBy.join(", ")} and will also be enabled.`));
87
+ }
88
+ if (installed.length === 0 && uninstalled.length === 0) {
89
+ await (0, pipeline_1.applyPlanned)(ctx, plan);
90
+ ctx.issues.assertEmpty();
91
+ console.info((0, colorette_1.green)("[info] Project is in sync with modules.json; wiring refreshed."));
92
+ return;
93
+ }
94
+ let message;
95
+ if (!uninstalled.length && installed.length) {
96
+ message = `Do you want to INSTALL ${(0, colorette_1.cyan)(installed.join(", "))}?`;
97
+ }
98
+ else if (uninstalled.length && !installed.length) {
99
+ message = `Do you want to UNINSTALL ${(0, colorette_1.inverse)(uninstalled.join(", "))}?`;
100
+ }
101
+ else {
102
+ message = `Do you want to UNINSTALL ${(0, colorette_1.inverse)(uninstalled.join(", "))} and INSTALL ${(0, colorette_1.cyan)(installed.join(", "))}?`;
103
+ }
104
+ if (!options.yes && !options.dryRun) {
105
+ const confirmed = await (0, prompts_1.select)({
106
+ message,
107
+ choices: [
108
+ { name: "Yes", value: "yes" },
109
+ { name: "No", value: "no" },
110
+ ],
111
+ });
112
+ if (confirmed !== "yes") {
113
+ console.info("[info] Cancelled.");
114
+ return;
115
+ }
116
+ }
117
+ await (0, pipeline_1.applyPlanned)(ctx, plan);
118
+ ctx.issues.assertEmpty();
119
+ console.info((0, colorette_1.bold)((0, colorette_1.green)("\n🍺 C O M P L E T E\n")));
120
+ }
121
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/modules/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function runLint(options: {
2
+ cwd: string;
3
+ }): Promise<void>;
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runDevLint = runDevLint;
6
+ exports.runLint = runLint;
7
7
  const promises_1 = __importDefault(require("node:fs/promises"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const colorette_1 = require("colorette");
10
- const layer_lint_1 = require("../../core/layer-lint");
11
10
  const paths_1 = require("../../constants/paths");
11
+ const layer_lint_1 = require("../../core/layer-lint");
12
12
  const errors_1 = require("../../lib/errors");
13
13
  const registry_1 = require("../../lib/registry");
14
14
  const IMPORT_PATTERN = /@modules\/([a-z0-9-]+)/g;
@@ -37,21 +37,22 @@ async function moduleDependencies(dir, selfKey) {
37
37
  }
38
38
  return [...dependencies].sort();
39
39
  }
40
- async function resolveLintTarget(cwd) {
40
+ async function requireRegistryCheckout(cwd) {
41
+ const root = node_path_1.default.resolve(cwd);
41
42
  try {
42
- await promises_1.default.stat(node_path_1.default.join(cwd, paths_1.REGISTRY_MODULES_DIR));
43
- return { root: cwd, url: "", sourceCommit: null, local: true };
43
+ await promises_1.default.stat(node_path_1.default.join(root, paths_1.REGISTRY_MODULES_DIR));
44
44
  }
45
45
  catch {
46
- return (0, registry_1.requireRegistry)({ fetch: false });
46
+ throw new errors_1.CliError(`modules lint only works inside a newbie-modules registry checkout. Run it from the registry working tree (cwd must contain ${paths_1.REGISTRY_MODULES_DIR}).`);
47
47
  }
48
+ return root;
48
49
  }
49
- async function runDevLint(options) {
50
- const registry = await resolveLintTarget(node_path_1.default.resolve(options.cwd));
51
- const keys = await (0, registry_1.listRegistryKeys)(registry.root);
50
+ async function runLint(options) {
51
+ const root = await requireRegistryCheckout(options.cwd);
52
+ const keys = await (0, registry_1.listRegistryKeys)(root);
52
53
  const modules = [];
53
54
  for (const key of keys) {
54
- const mod = await (0, registry_1.readRegistryModule)(registry.root, key);
55
+ const mod = await (0, registry_1.readRegistryModule)(root, key);
55
56
  if (!mod)
56
57
  continue;
57
58
  modules.push({
@@ -61,7 +62,7 @@ async function runDevLint(options) {
61
62
  declaredDependencies: mod.manifest.moduleDependencies ?? [],
62
63
  });
63
64
  }
64
- console.info(`Linted ${modules.length} registry module(s) in ${registry.root}\n`);
65
+ console.info(`Linted ${modules.length} registry module(s) in ${root}\n`);
65
66
  const findings = (0, layer_lint_1.lintModuleLayers)(modules);
66
67
  const errors = findings.filter((finding) => finding.level === "error");
67
68
  const warnings = findings.filter((finding) => finding.level === "warning");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../src/commands/modules/lint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { GlobalOptions } from "../shared";
2
+ export interface ModulesRemoveOptions extends GlobalOptions {
3
+ yes?: boolean;
4
+ keys: string[];
5
+ }
6
+ export declare function runRemove(options: ModulesRemoveOptions): Promise<void>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runRemove = runRemove;
4
+ const prompts_1 = require("@inquirer/prompts");
5
+ const colorette_1 = require("colorette");
6
+ const module_graph_1 = require("../../assemble/module-graph");
7
+ const pipeline_1 = require("../../assemble/pipeline");
8
+ const module_closure_1 = require("../../core/module-closure");
9
+ const modules_state_1 = require("../../core/modules-state");
10
+ const errors_1 = require("../../lib/errors");
11
+ const shared_1 = require("../shared");
12
+ async function runRemove(options) {
13
+ const { ctx } = await (0, shared_1.createContext)(options, { fetch: false });
14
+ const enabled = (0, modules_state_1.moduleKeys)(ctx.state);
15
+ const notEnabled = options.keys.filter((key) => !enabled.includes(key));
16
+ if (notEnabled.length > 0) {
17
+ throw new errors_1.CliError(`Module(s) not enabled: ${notEnabled.join(", ")}. Enabled modules: ${enabled.join(", ") || "(none)"}`);
18
+ }
19
+ const removed = new Set(options.keys);
20
+ const next = enabled.filter((key) => !removed.has(key));
21
+ const closure = await (0, module_graph_1.expandRegistryClosure)(ctx.registry.root, next);
22
+ const stillRequired = closure.added.filter((key) => removed.has(key));
23
+ if (stillRequired.length > 0) {
24
+ const among = new Set(next);
25
+ const lines = stillRequired.map((key) => `cannot remove '${key}': still required by ${(0, module_closure_1.directDependents)(key, closure.graph, among).join(", ")}`);
26
+ throw new errors_1.CliError(`${lines.join("\n")}. Remove the dependent modules first.`);
27
+ }
28
+ if (!options.yes && !options.dryRun) {
29
+ const confirmed = await (0, prompts_1.select)({
30
+ message: `Do you want to REMOVE ${(0, colorette_1.inverse)(options.keys.join(", "))}?`,
31
+ choices: [
32
+ { name: "Yes", value: "yes" },
33
+ { name: "No", value: "no" },
34
+ ],
35
+ });
36
+ if (confirmed !== "yes") {
37
+ console.info("\n[info] Removal cancelled.\n");
38
+ return;
39
+ }
40
+ }
41
+ await (0, pipeline_1.applyModuleKeys)(ctx, next);
42
+ ctx.issues.assertEmpty();
43
+ for (const key of options.keys)
44
+ console.info((0, colorette_1.cyan)(`- ${key}`));
45
+ console.info((0, colorette_1.bold)((0, colorette_1.green)("\n🍺 C O M P L E T E\n")));
46
+ }
47
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/modules/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { GlobalOptions } from "../shared";
2
+ export interface ModulesUpdateOptions extends GlobalOptions {
3
+ yes?: boolean;
4
+ force?: boolean;
5
+ check?: boolean;
6
+ keys?: string[];
7
+ }
8
+ export declare function runUpdate(options: ModulesUpdateOptions): Promise<void>;
@@ -3,33 +3,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseKeysFlag = parseKeysFlag;
7
6
  exports.runUpdate = runUpdate;
8
7
  const figlet_1 = __importDefault(require("figlet"));
9
8
  const prompts_1 = require("@inquirer/prompts");
10
9
  const colorette_1 = require("colorette");
11
- const pipeline_1 = require("../assemble/pipeline");
12
- const module_graph_1 = require("../assemble/module-graph");
13
- const modules_copy_1 = require("../assemble/modules-copy");
14
- const drift_1 = require("../core/drift");
15
- const modules_state_1 = require("../core/modules-state");
16
- const drift_2 = require("../lib/drift");
17
- const fs_util_1 = require("../lib/fs-util");
18
- const paths_1 = require("../constants/paths");
19
- const modules_state_2 = require("../lib/modules-state");
20
- const errors_1 = require("../lib/errors");
21
- const shared_1 = require("./shared");
10
+ const module_graph_1 = require("../../assemble/module-graph");
11
+ const modules_copy_1 = require("../../assemble/modules-copy");
12
+ const module_source_drift_1 = require("../../assemble/module-source-drift");
13
+ const pipeline_1 = require("../../assemble/pipeline");
14
+ const drift_1 = require("../../core/drift");
15
+ const modules_state_1 = require("../../core/modules-state");
16
+ const paths_1 = require("../../constants/paths");
17
+ const drift_2 = require("../../lib/drift");
18
+ const errors_1 = require("../../lib/errors");
19
+ const fs_util_1 = require("../../lib/fs-util");
20
+ const modules_state_2 = require("../../lib/modules-state");
21
+ const shared_1 = require("../shared");
22
22
  const short = (commit) => (commit ? commit.slice(0, 7) : "unknown");
23
- function parseKeysFlag(input) {
24
- if (!input)
25
- return undefined;
26
- const keys = input
27
- .flatMap((chunk) => chunk.split(","))
28
- .map((key) => key.trim())
29
- .filter((key) => key.length > 0);
30
- return [...new Set(keys)];
23
+ function isInteractive() {
24
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY);
31
25
  }
32
26
  async function runUpdate(options) {
27
+ if (options.check) {
28
+ if (options.keys && options.keys.length > 0) {
29
+ throw new errors_1.CliError("`modules update --check` inspects every enabled module and does not accept module keys.");
30
+ }
31
+ await runUpdateCheck(options);
32
+ return;
33
+ }
33
34
  console.info(figlet_1.default.textSync("Newbie", {
34
35
  font: "Epic",
35
36
  width: 80,
@@ -87,10 +88,10 @@ async function runUpdate(options) {
87
88
  process.stdout.write("\x1b[2K\r");
88
89
  for (const result of inspections) {
89
90
  if (result.status === "missing") {
90
- console.info((0, colorette_1.yellow)(`[skip] ${result.key}: directory missing; run 'newbie install'.`));
91
+ console.info((0, colorette_1.yellow)(`[skip] ${result.key}: directory missing; run 'newbie modules install'.`));
91
92
  }
92
93
  else if (result.status === "missing-in-registry") {
93
- console.info((0, colorette_1.yellow)(`[skip] ${result.key}: not present in registry checkout ${short(registry.sourceCommit)}; set NEWBIE_MODULES_REF to a ref that carries it, then run 'newbie install'.`));
94
+ console.info((0, colorette_1.yellow)(`[skip] ${result.key}: not present in registry checkout ${short(registry.sourceCommit)}; set NEWBIE_MODULES_REF to a ref that carries it, then run 'newbie modules install'.`));
94
95
  }
95
96
  else if (result.status === "drifted") {
96
97
  console.info((0, colorette_1.yellow)(`[skip] ${result.key}: local changes detected (${result.patchIds.length} file(s)); re-run with --force to overwrite.`));
@@ -98,15 +99,21 @@ async function runUpdate(options) {
98
99
  }
99
100
  const updatable = inspections.filter((result) => result.status === "update-available");
100
101
  if (updatable.length === 0) {
101
- console.info((0, colorette_1.green)("\n[info] All modules are up to date.\n"));
102
+ const skipped = inspections.filter((result) => result.status !== "up-to-date").length;
103
+ if (skipped === 0) {
104
+ console.info((0, colorette_1.green)("\n[info] All modules are up to date.\n"));
105
+ }
106
+ else {
107
+ console.info((0, colorette_1.yellow)(`\n[info] Nothing to update: ${skipped} module(s) skipped (see above).\n`));
108
+ }
102
109
  return;
103
110
  }
104
111
  let selected;
105
- if (options.keys) {
112
+ if (options.keys && options.keys.length > 0) {
106
113
  const enabled = new Set(keys);
107
114
  const unknown = options.keys.filter((key) => !enabled.has(key));
108
115
  if (unknown.length > 0) {
109
- throw new errors_1.CliError(`Unknown or disabled module(s) in --keys: ${unknown.join(", ")}. Enabled: ${keys.join(", ")}`);
116
+ throw new errors_1.CliError(`Unknown or disabled module(s): ${unknown.join(", ")}. Enabled: ${keys.join(", ")}`);
110
117
  }
111
118
  const updatableKeys = new Set(updatable.map((result) => result.key));
112
119
  for (const key of options.keys) {
@@ -119,11 +126,11 @@ async function runUpdate(options) {
119
126
  }
120
127
  selected = updatable.filter((result) => options.keys.includes(result.key));
121
128
  if (selected.length === 0) {
122
- console.info((0, colorette_1.green)("\n[info] Nothing to update for the given --keys.\n"));
129
+ console.info((0, colorette_1.green)("\n[info] Nothing to update for the given modules.\n"));
123
130
  return;
124
131
  }
125
132
  }
126
- else if (options.all || options.dryRun) {
133
+ else if (options.dryRun || !isInteractive()) {
127
134
  selected = updatable;
128
135
  }
129
136
  else {
@@ -180,4 +187,38 @@ async function runUpdate(options) {
180
187
  ctx.issues.assertEmpty();
181
188
  console.info((0, colorette_1.bold)((0, colorette_1.green)("\nC O M P L E T E\n")));
182
189
  }
190
+ function printSourceDrift(drift) {
191
+ const verdict = drift.report === null ? "absent from" : "differs from";
192
+ console.info((0, colorette_1.bold)(`\n# ${drift.installedPath} (${verdict} ${drift.registryPath})`));
193
+ if (drift.report === null)
194
+ return;
195
+ for (const file of drift.report.added)
196
+ console.info(` added: ${file}`);
197
+ for (const file of drift.report.changed)
198
+ console.info(` changed: ${file}`);
199
+ for (const file of drift.report.removed)
200
+ console.info(` removed: ${file}`);
201
+ }
202
+ async function runUpdateCheck(options) {
203
+ const { ctx } = await (0, shared_1.createContext)(options, { fetch: false });
204
+ const enabledKeys = (0, modules_state_1.moduleKeys)(ctx.state);
205
+ if (enabledKeys.length === 0) {
206
+ console.info((0, colorette_1.green)((0, colorette_1.bold)("✓ No modules are enabled.")));
207
+ return;
208
+ }
209
+ const drifts = await (0, module_source_drift_1.diffModuleSources)({
210
+ cwd: ctx.cwd,
211
+ registryRoot: ctx.registry.root,
212
+ enabledKeys,
213
+ });
214
+ if (drifts.length === 0) {
215
+ console.info((0, colorette_1.green)((0, colorette_1.bold)("✓ Installed module sources match the registry checkout.")));
216
+ return;
217
+ }
218
+ for (const drift of drifts)
219
+ printSourceDrift(drift);
220
+ const keys = drifts.map((drift) => drift.key).join(", ");
221
+ throw new errors_1.CliError(`${drifts.length} installed module(s) differ from the registry checkout (${keys}); ` +
222
+ "back-port the host changes to newbie-modules, or run `newbie modules update` to adopt the registry version.");
223
+ }
183
224
  //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/modules/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface ModulesWatchOptions {
2
+ cwd: string;
3
+ all?: boolean;
4
+ keys?: string[];
5
+ }
6
+ export declare function runWatch(options: ModulesWatchOptions): Promise<void>;
@@ -8,10 +8,10 @@ const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const promises_1 = __importDefault(require("node:fs/promises"));
9
9
  const node_path_1 = __importDefault(require("node:path"));
10
10
  const colorette_1 = require("colorette");
11
- const paths_1 = require("../constants/paths");
12
- const errors_1 = require("../lib/errors");
13
- const exec_1 = require("../lib/exec");
14
- const registry_1 = require("../lib/registry");
11
+ const paths_1 = require("../../constants/paths");
12
+ const errors_1 = require("../../lib/errors");
13
+ const exec_1 = require("../../lib/exec");
14
+ const registry_1 = require("../../lib/registry");
15
15
  async function installedModuleKeys(projectRoot) {
16
16
  const dir = node_path_1.default.join(projectRoot, paths_1.MODULES_DIR);
17
17
  try {
@@ -71,11 +71,19 @@ async function runWatch(options) {
71
71
  "Set NEWBIE_MODULES_PATH to a local newbie-modules working tree.");
72
72
  }
73
73
  const installed = await installedModuleKeys(projectRoot);
74
- const watchKeys = options.all ? await listRegistryKeys(registry.root) : installed;
74
+ const baseKeys = options.all ? await listRegistryKeys(registry.root) : installed;
75
+ const selected = options.keys && options.keys.length > 0 ? new Set(options.keys) : null;
76
+ const watchKeys = selected ? baseKeys.filter((key) => selected.has(key)) : baseKeys;
77
+ if (selected) {
78
+ const missing = [...selected].filter((key) => !baseKeys.includes(key));
79
+ if (missing.length > 0) {
80
+ console.warn((0, colorette_1.yellow)(` ! ${missing.join(", ")}: not ${options.all ? "in the registry" : "installed in this project"}; skipping`));
81
+ }
82
+ }
75
83
  if (watchKeys.length === 0) {
76
84
  console.info((0, colorette_1.yellow)(options.all
77
- ? "No modules found in the registry."
78
- : "No modules installed in this project. Run `newbie install` first, or use --all to watch every registry module."));
85
+ ? "No matching modules found in the registry."
86
+ : "No modules installed in this project. Run `newbie modules install` first, or use --all to watch every registry module."));
79
87
  return;
80
88
  }
81
89
  console.info((0, colorette_1.cyan)(`Watching ${watchKeys.length} module(s) for changes in ${registry.root}…`));
@@ -123,7 +131,7 @@ async function runWatch(options) {
123
131
  });
124
132
  }
125
133
  async function listRegistryKeys(registryRoot) {
126
- const dir = node_path_1.default.resolve(registryRoot, "packages", "modules");
134
+ const dir = node_path_1.default.resolve(registryRoot, paths_1.REGISTRY_MODULES_DIR);
127
135
  try {
128
136
  const entries = await promises_1.default.readdir(dir, { withFileTypes: true });
129
137
  const keys = [];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/commands/modules/watch.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare function printBanner(): void;
11
11
  export interface ContextOptions {
12
12
  ensureConfig?: boolean;
13
13
  fetch?: boolean;
14
+ check?: boolean;
14
15
  }
15
16
  export declare function createContext(options: GlobalOptions, opts?: ContextOptions): Promise<{
16
17
  ctx: PipelineContext;
@@ -34,7 +34,7 @@ function printBanner() {
34
34
  }
35
35
  async function createContext(options, opts = {}) {
36
36
  const cwd = node_path_1.default.resolve(options.cwd);
37
- const sink = (0, sink_1.createSink)(cwd, options.dryRun);
37
+ const sink = (0, sink_1.createSink)(cwd, options.dryRun, { check: opts.check });
38
38
  const issues = new issues_1.IssueBag();
39
39
  if (opts.ensureConfig) {
40
40
  await (0, modules_state_1.ensureModulesState)(cwd, sink);
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;;;;AAmBA,gCAOC;AAED,kCAUC;AAaD,sCA6BC;AAhFD,gEAAkC;AAClC,0DAA6B;AAC7B,oDAA4B;AAC5B,yCAAiC;AAEjC,+CAAuD;AACvD,8CAA8C;AAE9C,0CAAyC;AACzC,wDAA4E;AAC5E,8CAAoE;AACpE,sCAA+C;AAQxC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,IAAA,oBAAS,EAAC,IAAA,mBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,CAAC,IAAI,CACV,IAAA,gBAAI,EACF,gBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,GAAG;QACV,eAAe,EAAE,IAAI;KACtB,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAaM,KAAK,UAAU,aAAa,CACjC,OAAsB,EACtB,OAAuB,EAAE;IAMzB,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,iBAAQ,EAAE,CAAC;IAE9B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,IAAA,kCAAkB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAoB;QAC3B,GAAG;QACH,IAAI;QACJ,MAAM;QACN,KAAK;QACL,QAAQ;QACR,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;;;;AAmBA,gCAOC;AAED,kCAUC;AAeD,sCA6BC;AAlFD,gEAAkC;AAClC,0DAA6B;AAC7B,oDAA4B;AAC5B,yCAAiC;AAEjC,+CAAuD;AACvD,8CAA8C;AAE9C,0CAAyC;AACzC,wDAA4E;AAC5E,8CAAoE;AACpE,sCAA+C;AAQxC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,IAAA,oBAAS,EAAC,IAAA,mBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,CAAC,IAAI,CACV,IAAA,gBAAI,EACF,gBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,GAAG;QACV,eAAe,EAAE,IAAI;KACtB,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAeM,KAAK,UAAU,aAAa,CACjC,OAAsB,EACtB,OAAuB,EAAE;IAMzB,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,iBAAQ,EAAE,CAAC;IAE9B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,IAAA,kCAAkB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAoB;QAC3B,GAAG;QACH,IAAI;QACJ,MAAM;QACN,KAAK;QACL,QAAQ;QACR,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { GlobalOptions } from "../shared";
2
+ import { TemplateReference } from "../create";
3
+ export interface TemplateSyncOptions extends GlobalOptions, TemplateReference {
4
+ check?: boolean;
5
+ paths?: string[];
6
+ }
7
+ export declare function runTemplateSync(options: TemplateSyncOptions): Promise<void>;
@@ -3,15 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runSyncTemplate = runSyncTemplate;
6
+ exports.runTemplateSync = runTemplateSync;
7
7
  const promises_1 = __importDefault(require("node:fs/promises"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const colorette_1 = require("colorette");
10
- const template_sync_1 = require("../core/template-sync");
11
- const unified_diff_1 = require("../core/unified-diff");
12
- const errors_1 = require("../lib/errors");
13
- const sink_1 = require("../lib/sink");
14
- const create_1 = require("./create");
10
+ const template_sync_1 = require("../../core/template-sync");
11
+ const unified_diff_1 = require("../../core/unified-diff");
12
+ const errors_1 = require("../../lib/errors");
13
+ const sink_1 = require("../../lib/sink");
14
+ const create_1 = require("../create");
15
15
  function matchesPathFilter(filePath, filter) {
16
16
  const normalized = filter.replace(/^\.\//, "").replace(/\/+$/, "");
17
17
  if (normalized === "")
@@ -85,10 +85,7 @@ function printChangeDiff(change) {
85
85
  const diff = (0, unified_diff_1.unifiedDiff)(change.currentComparable ?? "", change.templateComparable ?? "", aLabel, `b/${label}`);
86
86
  process.stdout.write(diff);
87
87
  }
88
- async function runSyncTemplate(options) {
89
- if (options.check && options.write) {
90
- throw new errors_1.CliError("--check and --write are mutually exclusive.");
91
- }
88
+ async function runTemplateSync(options) {
92
89
  const cwd = node_path_1.default.resolve(options.cwd);
93
90
  const sink = (0, sink_1.createSink)(cwd, options.dryRun);
94
91
  const templateFiles = filterTemplateFiles(options.paths);
@@ -123,17 +120,11 @@ async function runSyncTemplate(options) {
123
120
  }
124
121
  console.info(`\n${actionable.length} template file(s) to sync: ` +
125
122
  actionable.map((c) => `${c.file.path} (${c.kind})`).join(", "));
126
- const writeCommand = scope ? `newbie sync-template --write ${scope}` : "newbie sync-template --write";
127
123
  if (options.check) {
124
+ const command = scope ? `newbie template sync ${scope}` : "newbie template sync";
128
125
  throw new errors_1.CliError(`${changes.length} template file(s) drift from the template ` +
129
126
  `(${actionable.length} auto-fixable). ` +
130
- `Run \`${writeCommand}\` to apply the template version.`);
131
- }
132
- if (!options.write) {
133
- console.info("\nNext steps:");
134
- console.info(` ${writeCommand} # apply these changes (supports --dry-run)`);
135
- console.info(" git checkout -b chore/template-sync # then review `git diff` and open a PR");
136
- return;
127
+ `Run \`${command}\` to apply the template version.`);
137
128
  }
138
129
  for (const change of actionable) {
139
130
  if (change.nextContent !== null) {
@@ -148,4 +139,4 @@ async function runSyncTemplate(options) {
148
139
  console.info("Review with `git diff`, then commit on a branch and open a PR.");
149
140
  }
150
141
  }
151
- //# sourceMappingURL=sync-template.js.map
142
+ //# sourceMappingURL=sync.js.map