@devbie/newbie-cli 1.9.0 → 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 (77) hide show
  1. package/README.md +79 -103
  2. package/dist/assemble/modules-copy.d.ts +4 -0
  3. package/dist/assemble/modules-copy.js +19 -0
  4. package/dist/assemble/modules-copy.js.map +1 -1
  5. package/dist/assemble/modules.js +1 -1
  6. package/dist/assemble/schema.js +1 -1
  7. package/dist/commands/create.js +1 -1
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/commands/doctor.d.ts +4 -1
  10. package/dist/commands/doctor.js +36 -16
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/modules/default.d.ts +5 -0
  13. package/dist/commands/{default.js → modules/default.js} +64 -13
  14. package/dist/commands/modules/default.js.map +1 -0
  15. package/dist/commands/modules/install.d.ts +7 -0
  16. package/dist/commands/modules/install.js +121 -0
  17. package/dist/commands/modules/install.js.map +1 -0
  18. package/dist/commands/modules/lint.d.ts +3 -0
  19. package/dist/commands/{dev → modules}/lint.js +12 -11
  20. package/dist/commands/modules/lint.js.map +1 -0
  21. package/dist/commands/modules/remove.d.ts +6 -0
  22. package/dist/commands/modules/remove.js +47 -0
  23. package/dist/commands/modules/remove.js.map +1 -0
  24. package/dist/commands/modules/update.d.ts +8 -0
  25. package/dist/commands/{update.js → modules/update.js} +75 -25
  26. package/dist/commands/modules/update.js.map +1 -0
  27. package/dist/commands/modules/watch.d.ts +6 -0
  28. package/dist/commands/{watch.js → modules/watch.js} +16 -8
  29. package/dist/commands/modules/watch.js.map +1 -0
  30. package/dist/commands/shared.d.ts +1 -0
  31. package/dist/commands/shared.js +1 -1
  32. package/dist/commands/shared.js.map +1 -1
  33. package/dist/commands/template/sync.d.ts +7 -0
  34. package/dist/commands/{sync-template.js → template/sync.js} +10 -19
  35. package/dist/commands/template/sync.js.map +1 -0
  36. package/dist/core/deploy-compose.js +1 -1
  37. package/dist/index.d.ts +2 -1
  38. package/dist/index.js +3 -179
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/fs-util.d.ts +1 -0
  41. package/dist/lib/fs-util.js +10 -0
  42. package/dist/lib/fs-util.js.map +1 -1
  43. package/dist/lib/module-selector.d.ts +1 -0
  44. package/dist/lib/module-selector.js +13 -0
  45. package/dist/lib/module-selector.js.map +1 -0
  46. package/dist/lib/sink.d.ts +10 -1
  47. package/dist/lib/sink.js +42 -3
  48. package/dist/lib/sink.js.map +1 -1
  49. package/dist/program.d.ts +3 -0
  50. package/dist/program.js +166 -0
  51. package/dist/program.js.map +1 -0
  52. package/package.json +1 -1
  53. package/dist/commands/agent.d.ts +0 -5
  54. package/dist/commands/agent.js +0 -223
  55. package/dist/commands/agent.js.map +0 -1
  56. package/dist/commands/apply.d.ts +0 -7
  57. package/dist/commands/apply.js +0 -61
  58. package/dist/commands/apply.js.map +0 -1
  59. package/dist/commands/assemble.d.ts +0 -5
  60. package/dist/commands/assemble.js +0 -66
  61. package/dist/commands/assemble.js.map +0 -1
  62. package/dist/commands/config.d.ts +0 -7
  63. package/dist/commands/config.js +0 -120
  64. package/dist/commands/config.js.map +0 -1
  65. package/dist/commands/default.d.ts +0 -2
  66. package/dist/commands/default.js.map +0 -1
  67. package/dist/commands/dev/lint.d.ts +0 -3
  68. package/dist/commands/dev/lint.js.map +0 -1
  69. package/dist/commands/install.d.ts +0 -4
  70. package/dist/commands/install.js +0 -48
  71. package/dist/commands/install.js.map +0 -1
  72. package/dist/commands/sync-template.d.ts +0 -8
  73. package/dist/commands/sync-template.js.map +0 -1
  74. package/dist/commands/update.d.ts +0 -8
  75. package/dist/commands/update.js.map +0 -1
  76. package/dist/commands/watch.d.ts +0 -5
  77. package/dist/commands/watch.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/commands/modules/default.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { GlobalOptions } from "../shared";
2
+ export interface ModulesInstallOptions extends GlobalOptions {
3
+ yes?: boolean;
4
+ check?: boolean;
5
+ keys?: string[];
6
+ }
7
+ export declare function runInstall(options: ModulesInstallOptions): Promise<void>;
@@ -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,32 +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 drift_1 = require("../core/drift");
14
- const modules_state_1 = require("../core/modules-state");
15
- const drift_2 = require("../lib/drift");
16
- const fs_util_1 = require("../lib/fs-util");
17
- const paths_1 = require("../constants/paths");
18
- const modules_state_2 = require("../lib/modules-state");
19
- const errors_1 = require("../lib/errors");
20
- 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");
21
22
  const short = (commit) => (commit ? commit.slice(0, 7) : "unknown");
22
- function parseKeysFlag(input) {
23
- if (!input)
24
- return undefined;
25
- const keys = input
26
- .flatMap((chunk) => chunk.split(","))
27
- .map((key) => key.trim())
28
- .filter((key) => key.length > 0);
29
- return [...new Set(keys)];
23
+ function isInteractive() {
24
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY);
30
25
  }
31
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
+ }
32
34
  console.info(figlet_1.default.textSync("Newbie", {
33
35
  font: "Epic",
34
36
  width: 80,
@@ -76,12 +78,20 @@ async function runUpdate(options) {
76
78
  }
77
79
  }
78
80
  }
81
+ const missingSources = await (0, modules_copy_1.collectMissingRegistrySources)(registry.root, [key]);
82
+ if (missingSources.length > 0) {
83
+ inspections.push({ ...base, status: "missing-in-registry" });
84
+ continue;
85
+ }
79
86
  inspections.push({ ...base, status: "update-available" });
80
87
  }
81
88
  process.stdout.write("\x1b[2K\r");
82
89
  for (const result of inspections) {
83
90
  if (result.status === "missing") {
84
- 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'.`));
92
+ }
93
+ else if (result.status === "missing-in-registry") {
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'.`));
85
95
  }
86
96
  else if (result.status === "drifted") {
87
97
  console.info((0, colorette_1.yellow)(`[skip] ${result.key}: local changes detected (${result.patchIds.length} file(s)); re-run with --force to overwrite.`));
@@ -89,15 +99,21 @@ async function runUpdate(options) {
89
99
  }
90
100
  const updatable = inspections.filter((result) => result.status === "update-available");
91
101
  if (updatable.length === 0) {
92
- 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
+ }
93
109
  return;
94
110
  }
95
111
  let selected;
96
- if (options.keys) {
112
+ if (options.keys && options.keys.length > 0) {
97
113
  const enabled = new Set(keys);
98
114
  const unknown = options.keys.filter((key) => !enabled.has(key));
99
115
  if (unknown.length > 0) {
100
- 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(", ")}`);
101
117
  }
102
118
  const updatableKeys = new Set(updatable.map((result) => result.key));
103
119
  for (const key of options.keys) {
@@ -110,11 +126,11 @@ async function runUpdate(options) {
110
126
  }
111
127
  selected = updatable.filter((result) => options.keys.includes(result.key));
112
128
  if (selected.length === 0) {
113
- 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"));
114
130
  return;
115
131
  }
116
132
  }
117
- else if (options.all || options.dryRun) {
133
+ else if (options.dryRun || !isInteractive()) {
118
134
  selected = updatable;
119
135
  }
120
136
  else {
@@ -171,4 +187,38 @@ async function runUpdate(options) {
171
187
  ctx.issues.assertEmpty();
172
188
  console.info((0, colorette_1.bold)((0, colorette_1.green)("\nC O M P L E T E\n")));
173
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
+ }
174
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>;