@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 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/template/sync.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ exports.buildComposeModulesYaml = buildComposeModulesYaml;
4
4
  const env_file_1 = require("./env-file");
5
5
  const datastore_registry_1 = require("./datastore-registry");
6
6
  const HEADER = `# THIS FILE IS GENERATED BY @devbie/newbie-cli. DO NOT EDIT.
7
- # Regenerate with \`newbie assemble\` (it also runs as part of install/apply/update).
7
+ # Regenerate with \`newbie modules install\` (it also runs as part of modules update).
8
8
 
9
9
  `;
10
10
  const EMPTY_YAML = `${HEADER}services: {}\n`;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export declare const VERSION: string;
2
+ import { VERSION } from "./program";
3
+ export { VERSION };
package/dist/index.js CHANGED
@@ -1,45 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
4
  exports.VERSION = void 0;
8
- const commander_1 = require("commander");
9
5
  const colorette_1 = require("colorette");
10
- const package_json_1 = __importDefault(require("../package.json"));
11
- const agent_1 = require("./commands/agent");
12
- const apply_1 = require("./commands/apply");
13
- const assemble_1 = require("./commands/assemble");
14
- const config_1 = require("./commands/config");
15
- const create_1 = require("./commands/create");
16
- const lint_1 = require("./commands/dev/lint");
17
- const doctor_1 = require("./commands/doctor");
18
- const install_1 = require("./commands/install");
19
- const status_1 = require("./commands/status");
20
- const update_1 = require("./commands/update");
21
- const sync_template_1 = require("./commands/sync-template");
22
- const watch_1 = require("./commands/watch");
23
- const default_1 = require("./commands/default");
6
+ const program_1 = require("./program");
7
+ Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return program_1.VERSION; } });
24
8
  const module_cli_1 = require("./lib/module-cli");
25
- const cli_runner_1 = require("./lib/cli-runner");
26
- exports.VERSION = package_json_1.default.version;
27
- const program = new commander_1.Command();
28
- program
29
- .name("newbie")
30
- .description("Newbie framework CLI: install modules from the newbie-modules registry and sync project files")
31
- .version(exports.VERSION)
32
- .option("-C, --cwd <dir>", "project root directory", process.cwd())
33
- .option("--dry-run", "print planned changes without writing files or running mutating commands", false)
34
- .option("--skip-prisma-generate", "skip `npx prisma generate` after schema changes", false);
35
- function collectOptions(command) {
36
- const globals = command.optsWithGlobals();
37
- return {
38
- cwd: globals.cwd ?? process.cwd(),
39
- dryRun: Boolean(globals.dryRun),
40
- skipPrismaGenerate: Boolean(globals.skipPrismaGenerate),
41
- };
42
- }
43
9
  function findCwdInArgv() {
44
10
  const argv = process.argv;
45
11
  for (let i = 2; i < argv.length; i++) {
@@ -61,149 +27,7 @@ function findCwdInArgv() {
61
27
  }
62
28
  return process.cwd();
63
29
  }
64
- program
65
- .command("install")
66
- .description("Reconcile the project with modules.json (copy missing modules / remove extra ones and regenerate wiring)")
67
- .option("-y, --yes", "skip confirmation prompts", false)
68
- .action(function () {
69
- const options = { ...collectOptions(this), yes: Boolean(this.opts().yes) };
70
- return (0, cli_runner_1.run)(() => (0, install_1.runInstall)(options));
71
- });
72
- program
73
- .command("assemble")
74
- .description("Regenerate module-derived deploy assets (deploy/compose.modules.yml, Caddyfile module route block) from the installed module set")
75
- .option("--check", "CI gate: print the diff and exit non-zero when the generated deploy assets drift", false)
76
- .action(function () {
77
- const flags = this.opts();
78
- return (0, cli_runner_1.run)(() => (0, assemble_1.runAssemble)({ ...collectOptions(this), check: Boolean(flags.check) }));
79
- });
80
- program
81
- .command("config")
82
- .description("View or edit the enabled-module list in modules.json without touching project files")
83
- .option("--add <modules...>", "enable module(s), space or comma separated")
84
- .option("--remove <modules...>", "disable module(s), space or comma separated")
85
- .option("--list", "print current configuration", false)
86
- .action(function () {
87
- const flags = this.opts();
88
- return (0, cli_runner_1.run)(() => (0, config_1.runConfig)({
89
- ...collectOptions(this),
90
- add: flags.add,
91
- remove: flags.remove,
92
- list: Boolean(flags.list),
93
- }));
94
- });
95
- program
96
- .command("update")
97
- .description("Update enabled module copies to the registry HEAD commit (blocks on local drift unless --force)")
98
- .option("--all", "select every module with an available update", false)
99
- .option("-y, --yes", "skip confirmation prompts", false)
100
- .option("--force", "overwrite locally drifted module copies", false)
101
- .option("--keys <moduleKeys...>", "non-interactive module selector (comma or space separated)")
102
- .action(function () {
103
- const flags = this.opts();
104
- return (0, cli_runner_1.run)(() => (0, update_1.runUpdate)({
105
- ...collectOptions(this),
106
- all: Boolean(flags.all),
107
- yes: Boolean(flags.yes),
108
- force: Boolean(flags.force),
109
- keys: (0, update_1.parseKeysFlag)(flags.keys),
110
- }));
111
- });
112
- program
113
- .command("apply")
114
- .description('Non-interactively sync the module set declared in a JSON spec ({"modules": [...]})')
115
- .requiredOption("--config <file>", "path to the declarative apply spec JSON")
116
- .option("--ci", "CI mode marker (apply is always non-interactive)", false)
117
- .action(function () {
118
- const flags = this.opts();
119
- return (0, cli_runner_1.run)(() => (0, apply_1.runApply)({
120
- ...collectOptions(this),
121
- config: flags.config,
122
- ci: Boolean(flags.ci),
123
- }));
124
- });
125
- program
126
- .command("doctor")
127
- .description("Audit the installation: registry pins, copied modules, drift, env and prisma wiring")
128
- .action(function () {
129
- return (0, cli_runner_1.run)(() => (0, doctor_1.runDoctor)(collectOptions(this)));
130
- });
131
- program
132
- .command("status")
133
- .description("Print machine-readable project state as JSON")
134
- .option("--drift", "include content drift against pinned pristine copies", false)
135
- .action(function () {
136
- const flags = this.opts();
137
- return (0, cli_runner_1.run)(() => (0, status_1.runStatus)({ ...collectOptions(this), drift: Boolean(flags.drift) }));
138
- });
139
- program
140
- .command("create <name>")
141
- .description("Scaffold a new project from the basic template")
142
- .option("--template-path <dir>", "use a local template directory instead of cloning newbie-starter")
143
- .option("--template-ref <ref>", "git ref of newbie-starter to clone the template from")
144
- .option("--no-git-init", "skip 'git init' in the new project", undefined)
145
- .action(function (name) {
146
- const flags = this.opts();
147
- return (0, cli_runner_1.run)(() => (0, create_1.runCreate)({
148
- ...collectOptions(this),
149
- name,
150
- templatePath: flags.templatePath,
151
- templateRef: flags.templateRef,
152
- gitInit: flags.gitInit,
153
- }));
154
- });
155
- program
156
- .command("sync-template [paths...]")
157
- .description("Diff framework-owned template files (ADR-009 ownership registry: main.ts, tsconfig*, nest-cli.json, prisma.config.ts, prisma framework block, .env.example/.gitignore framework blocks, deploy/*) against the template; generated and host-owned files are skipped. Pass path prefixes (e.g. deploy/) to restrict the scope")
158
- .option("--template-path <dir>", "use a local template directory instead of cloning newbie-starter")
159
- .option("--template-ref <ref>", "git ref (e.g. a template tag) of newbie-starter to sync from")
160
- .option("--write", "apply the template version of differing skeleton files", false)
161
- .option("--check", "CI gate: print the diff and exit non-zero when skeleton files drift", false)
162
- .action(function (paths) {
163
- const flags = this.opts();
164
- return (0, cli_runner_1.run)(() => (0, sync_template_1.runSyncTemplate)({
165
- ...collectOptions(this),
166
- templatePath: flags.templatePath,
167
- templateRef: flags.templateRef,
168
- write: Boolean(flags.write),
169
- check: Boolean(flags.check),
170
- paths,
171
- }));
172
- });
173
- program
174
- .command("agent")
175
- .description("Run the module-hub agent: poll the hub with `newbie status`, execute dispatched changes (apply/update), report receipts (requires hub v2; v1 hubs expose no agent-poll route)")
176
- .option("--once", "single pass: drain pending changes, deliver receipts, then exit (CI/cron friendly)", false)
177
- .action(function () {
178
- const flags = this.opts();
179
- return (0, cli_runner_1.run)(() => (0, agent_1.runAgent)({ ...collectOptions(this), once: Boolean(flags.once) }));
180
- });
181
- program
182
- .command("watch [keys...]")
183
- .description("Watch the local newbie-modules registry and sync installed module sources into the project on change")
184
- .option("--all", "watch every registry module instead of only installed ones", false)
185
- .action(function (_keys) {
186
- const flags = this.opts();
187
- return (0, cli_runner_1.run)(() => (0, watch_1.runWatch)({
188
- ...collectOptions(this),
189
- all: Boolean(flags.all),
190
- }));
191
- });
192
- const dev = program
193
- .command("dev")
194
- .description("Registry development commands (run inside the newbie-modules repo, not a consuming project)");
195
- dev
196
- .command("lint")
197
- .description("Enforce the module layering rules (feature -> capability -> infrastructure -> datastore) across registry sources")
198
- .action(function () {
199
- return (0, cli_runner_1.run)(() => (0, lint_1.runDevLint)(collectOptions(this)));
200
- });
201
- program
202
- .command("interactive", { isDefault: true, hidden: true })
203
- .description("Interactive module enable/disable flow (default)")
204
- .action(function () {
205
- return (0, cli_runner_1.run)(() => (0, default_1.runInteractive)(collectOptions(this)));
206
- });
30
+ const program = (0, program_1.buildProgram)();
207
31
  void (async () => {
208
32
  try {
209
33
  await (0, module_cli_1.registerModuleCommands)(program, {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AACA,yCAAgC;AAEhC,uCAAkD;AAGzC,wFAHc,iBAAO,OAGd;AAFhB,iDAA0D;AAS1D,SAAS,aAAa;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACjD,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAGhC,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,OAAO,GAAG,IAAA,sBAAY,GAAE,CAAC;AAE/B,KAAK,CAAC,KAAK,IAAI,EAAE;IACf,IAAI,CAAC;QACH,MAAM,IAAA,mCAAsB,EAAC,OAAO,EAAE;YACpC,GAAG,EAAE,aAAa,EAAE;YACpB,MAAM,EAAE,KAAK;YACb,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,iCAAkC,KAAe,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAK,KAAe,CAAC,KAAK,EAAE,CAAC;YACvD,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function parseModuleSelector(input: readonly string[] | undefined): string[] | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseModuleSelector = parseModuleSelector;
4
+ function parseModuleSelector(input) {
5
+ if (!input || input.length === 0)
6
+ return undefined;
7
+ const keys = input
8
+ .flatMap((chunk) => chunk.split(","))
9
+ .map((key) => key.trim())
10
+ .filter((key) => key.length > 0);
11
+ return [...new Set(keys)];
12
+ }
13
+ //# sourceMappingURL=module-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-selector.js","sourceRoot":"","sources":["../../src/lib/module-selector.ts"],"names":[],"mappings":";;AAKA,kDAOC;AAPD,SAAgB,mBAAmB,CAAC,KAAoC;IACtE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,IAAI,GAAG,KAAK;SACf,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,10 +1,19 @@
1
+ export interface SinkFinding {
2
+ path: string;
3
+ kind: "missing" | "differs" | "action";
4
+ detail?: string;
5
+ }
1
6
  export interface Sink {
2
7
  readonly cwd: string;
3
8
  readonly dryRun: boolean;
9
+ readonly check: boolean;
10
+ readonly findings: SinkFinding[];
4
11
  writeText(file: string, content: string): Promise<void>;
5
12
  writeJson(file: string, value: unknown): Promise<void>;
6
13
  remove(fileOrDir: string): Promise<void>;
7
14
  copy(fromAbsolute: string, toRelative: string): Promise<void>;
8
15
  run(command: string, args: string[], label?: string): Promise<void>;
9
16
  }
10
- export declare function createSink(cwd: string, dryRun: boolean): Sink;
17
+ export declare function createSink(cwd: string, dryRun: boolean, options?: {
18
+ check?: boolean;
19
+ }): Sink;
package/dist/lib/sink.js CHANGED
@@ -7,15 +7,37 @@ exports.createSink = createSink;
7
7
  const promises_1 = __importDefault(require("node:fs/promises"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const exec_1 = require("./exec");
10
- function createSink(cwd, dryRun) {
10
+ async function readOrNull(absolutePath) {
11
+ try {
12
+ return await promises_1.default.readFile(absolutePath, "utf8");
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ function createSink(cwd, dryRun, options = {}) {
11
19
  const resolve = (file) => node_path_1.default.resolve(cwd, file);
20
+ const check = Boolean(options.check);
21
+ const findings = [];
12
22
  const plan = (message) => {
13
23
  console.info(`[dry-run] ${message}`);
14
24
  };
25
+ const recordAction = (target, detail) => {
26
+ findings.push({ path: target, kind: "action", detail });
27
+ };
15
28
  return {
16
29
  cwd,
17
- dryRun,
30
+ dryRun: dryRun || check,
31
+ check,
32
+ findings,
18
33
  async writeText(file, content) {
34
+ if (check) {
35
+ const current = await readOrNull(resolve(file));
36
+ if (current !== content) {
37
+ findings.push({ path: file, kind: current === null ? "missing" : "differs" });
38
+ }
39
+ return;
40
+ }
19
41
  if (dryRun) {
20
42
  plan(`write ${file} (${content.length} bytes)`);
21
43
  return;
@@ -28,6 +50,15 @@ function createSink(cwd, dryRun) {
28
50
  await this.writeText(file, `${JSON.stringify(value, null, 2)}\n`);
29
51
  },
30
52
  async remove(fileOrDir) {
53
+ if (check) {
54
+ try {
55
+ await promises_1.default.stat(resolve(fileOrDir));
56
+ recordAction(fileOrDir, `remove ${fileOrDir}`);
57
+ }
58
+ catch {
59
+ }
60
+ return;
61
+ }
31
62
  if (dryRun) {
32
63
  plan(`remove ${fileOrDir}`);
33
64
  return;
@@ -35,6 +66,10 @@ function createSink(cwd, dryRun) {
35
66
  await promises_1.default.rm(resolve(fileOrDir), { recursive: true, force: true });
36
67
  },
37
68
  async copy(fromAbsolute, toRelative) {
69
+ if (check) {
70
+ recordAction(toRelative, `copy ${node_path_1.default.basename(fromAbsolute)} -> ${toRelative}`);
71
+ return;
72
+ }
38
73
  if (dryRun) {
39
74
  plan(`copy ${node_path_1.default.basename(fromAbsolute)} -> ${toRelative}`);
40
75
  return;
@@ -44,7 +79,11 @@ function createSink(cwd, dryRun) {
44
79
  await promises_1.default.mkdir(node_path_1.default.dirname(target), { recursive: true });
45
80
  await promises_1.default.cp(fromAbsolute, target, { recursive: true });
46
81
  },
47
- async run(command, args, _label) {
82
+ async run(command, args, label) {
83
+ if (check) {
84
+ recordAction(label ?? `${command} ${args.join(" ")}`.trim(), label ?? `${command} ${args.join(" ")}`.trim());
85
+ return;
86
+ }
48
87
  if (dryRun) {
49
88
  plan(`${command} ${args.join(" ")}`.trim());
50
89
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"sink.js","sourceRoot":"","sources":["../../src/lib/sink.ts"],"names":[],"mappings":";;;;;AAoBA,gCAoDC;AAxED,gEAAkC;AAClC,0DAA6B;AAE7B,iCAAkC;AAiBlC,SAAgB,UAAU,CAAC,GAAW,EAAE,MAAe;IACrD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAG,CAAC,OAAe,EAAQ,EAAE;QACrC,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,GAAG;QACH,MAAM;QAEN,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,SAAS,IAAI,KAAK,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,kBAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAc;YAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,SAAiB;YAC5B,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,MAAM,kBAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,UAAkB;YACjD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,QAAQ,mBAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,kBAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,kBAAE,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,IAAc,EAAE,MAAe;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,MAAM,IAAA,eAAQ,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sink.js","sourceRoot":"","sources":["../../src/lib/sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const VERSION: string;
3
+ export declare function buildProgram(): Command;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.VERSION = void 0;
7
+ exports.buildProgram = buildProgram;
8
+ const commander_1 = require("commander");
9
+ const package_json_1 = __importDefault(require("../package.json"));
10
+ const create_1 = require("./commands/create");
11
+ const doctor_1 = require("./commands/doctor");
12
+ const default_1 = require("./commands/modules/default");
13
+ const install_1 = require("./commands/modules/install");
14
+ const lint_1 = require("./commands/modules/lint");
15
+ const remove_1 = require("./commands/modules/remove");
16
+ const update_1 = require("./commands/modules/update");
17
+ const watch_1 = require("./commands/modules/watch");
18
+ const status_1 = require("./commands/status");
19
+ const sync_1 = require("./commands/template/sync");
20
+ const cli_runner_1 = require("./lib/cli-runner");
21
+ const module_selector_1 = require("./lib/module-selector");
22
+ exports.VERSION = package_json_1.default.version;
23
+ function buildProgram() {
24
+ const program = new commander_1.Command();
25
+ program
26
+ .name("newbie")
27
+ .description("Newbie framework CLI: manage modules from the newbie-modules registry and sync project files")
28
+ .version(exports.VERSION)
29
+ .option("-C, --cwd <dir>", "project root directory", process.cwd())
30
+ .option("--dry-run", "print planned changes without writing files or running mutating commands", false)
31
+ .option("--skip-prisma-generate", "skip `npx prisma generate` after schema changes", false);
32
+ function collectOptions(command) {
33
+ const globals = command.optsWithGlobals();
34
+ return {
35
+ cwd: globals.cwd ?? process.cwd(),
36
+ dryRun: Boolean(globals.dryRun),
37
+ skipPrismaGenerate: Boolean(globals.skipPrismaGenerate),
38
+ };
39
+ }
40
+ program
41
+ .command("create <project-name>")
42
+ .description("Scaffold a new project from the basic template")
43
+ .option("--template-path <dir>", "use a local template directory instead of cloning newbie-starter")
44
+ .option("--template-ref <ref>", "git ref of newbie-starter to clone the template from")
45
+ .option("--no-git-init", "skip 'git init' in the new project", undefined)
46
+ .action(function (name) {
47
+ const flags = this.opts();
48
+ return (0, cli_runner_1.run)(() => (0, create_1.runCreate)({
49
+ ...collectOptions(this),
50
+ name,
51
+ templatePath: flags.templatePath,
52
+ templateRef: flags.templateRef,
53
+ gitInit: flags.gitInit,
54
+ }));
55
+ });
56
+ program
57
+ .command("doctor")
58
+ .description("Audit the installation: registry pins, copied modules, drift, env and prisma wiring")
59
+ .option("--json", "print findings as JSON", false)
60
+ .action(function () {
61
+ const flags = this.opts();
62
+ return (0, cli_runner_1.run)(() => (0, doctor_1.runDoctor)({ ...collectOptions(this), json: Boolean(flags.json) }));
63
+ });
64
+ program
65
+ .command("status")
66
+ .description("Print machine-readable project state as JSON")
67
+ .option("--drift", "include content drift against pinned pristine copies", false)
68
+ .action(function () {
69
+ const flags = this.opts();
70
+ return (0, cli_runner_1.run)(() => (0, status_1.runStatus)({ ...collectOptions(this), drift: Boolean(flags.drift) }));
71
+ });
72
+ const modules = program
73
+ .command("modules")
74
+ .description("Inspect and manage the enabled module set (bare invocation opens the picker on a TTY)")
75
+ .option("--json", "print the module inventory as JSON", false);
76
+ modules.action(function () {
77
+ const flags = this.opts();
78
+ return (0, cli_runner_1.run)(() => (0, default_1.runModules)({ ...collectOptions(this), json: Boolean(flags.json) }));
79
+ });
80
+ modules
81
+ .command("install [keys...]")
82
+ .description("Reconcile the project with modules.json; with keys, declare them (npm-style add) and install. --check is the CI gate")
83
+ .option("--check", "CI gate: verify module copies and generated wiring without writing anything", false)
84
+ .option("-y, --yes", "skip confirmation prompts", false)
85
+ .action(function (keys) {
86
+ const flags = this.opts();
87
+ return (0, cli_runner_1.run)(() => (0, install_1.runInstall)({
88
+ ...collectOptions(this),
89
+ check: Boolean(flags.check),
90
+ yes: Boolean(flags.yes),
91
+ keys: (0, module_selector_1.parseModuleSelector)(keys),
92
+ }));
93
+ });
94
+ modules
95
+ .command("remove <keys...>")
96
+ .description("Remove modules from the enabled set (blocked while another enabled module still requires them)")
97
+ .option("-y, --yes", "skip confirmation prompts", false)
98
+ .action(function (keys) {
99
+ const flags = this.opts();
100
+ return (0, cli_runner_1.run)(() => (0, remove_1.runRemove)({
101
+ ...collectOptions(this),
102
+ yes: Boolean(flags.yes),
103
+ keys: (0, module_selector_1.parseModuleSelector)(keys) ?? [],
104
+ }));
105
+ });
106
+ modules
107
+ .command("update [keys...]")
108
+ .description("Update enabled module copies to the registry HEAD commit; --check is the offline drift gate against the registry checkout")
109
+ .option("--check", "CI gate: verify installed copies against the registry checkout without writing anything", false)
110
+ .option("-y, --yes", "skip confirmation prompts", false)
111
+ .option("--force", "overwrite locally drifted module copies", false)
112
+ .action(function (keys) {
113
+ const flags = this.opts();
114
+ return (0, cli_runner_1.run)(() => (0, update_1.runUpdate)({
115
+ ...collectOptions(this),
116
+ check: Boolean(flags.check),
117
+ yes: Boolean(flags.yes),
118
+ force: Boolean(flags.force),
119
+ keys: (0, module_selector_1.parseModuleSelector)(keys),
120
+ }));
121
+ });
122
+ modules
123
+ .command("watch [keys...]")
124
+ .description("Watch the local newbie-modules registry and sync installed module sources into the project on change")
125
+ .option("--all", "watch every registry module instead of only installed ones", false)
126
+ .action(function (keys) {
127
+ const flags = this.opts();
128
+ return (0, cli_runner_1.run)(() => (0, watch_1.runWatch)({
129
+ ...collectOptions(this),
130
+ all: Boolean(flags.all),
131
+ keys: (0, module_selector_1.parseModuleSelector)(keys),
132
+ }));
133
+ });
134
+ modules
135
+ .command("lint")
136
+ .description("Enforce the module layering rules (feature -> capability -> infrastructure -> datastore) across registry sources; registry checkouts only")
137
+ .action(function () {
138
+ return (0, cli_runner_1.run)(() => (0, lint_1.runLint)(collectOptions(this)));
139
+ });
140
+ const template = program.command("template").description("Manage the framework-owned part of the project template");
141
+ template.action(() => {
142
+ template.outputHelp();
143
+ });
144
+ template
145
+ .command("sync [paths...]")
146
+ .description("Sync framework-owned template files (ADR-009 ownership registry: main.ts, tsconfig*, nest-cli.json, prisma.config.ts, prisma framework block, .env.example/.gitignore framework blocks, deploy/*) from the template; pass path prefixes to restrict the scope")
147
+ .option("--template-path <dir>", "use a local template directory instead of cloning newbie-starter")
148
+ .option("--template-ref <ref>", "git ref (e.g. a template tag) of newbie-starter to sync from")
149
+ .option("--check", "CI gate: print the diff and exit non-zero when skeleton files drift", false)
150
+ .action(function (paths) {
151
+ const flags = this.opts();
152
+ return (0, cli_runner_1.run)(() => (0, sync_1.runTemplateSync)({
153
+ ...collectOptions(this),
154
+ templatePath: flags.templatePath,
155
+ templateRef: flags.templateRef,
156
+ check: Boolean(flags.check),
157
+ paths,
158
+ }));
159
+ });
160
+ program.action(() => {
161
+ program.outputHelp();
162
+ console.info(`\nnewbie v${exports.VERSION}`);
163
+ });
164
+ return program;
165
+ }
166
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devbie/newbie-cli",
3
- "version": "1.9.1",
3
+ "version": "1.10.0",
4
4
  "description": "newbie backend framework CLI",
5
5
  "license": "MIT",
6
6
  "author": "worldzhy",
@@ -1,5 +0,0 @@
1
- import { GlobalOptions } from "./shared";
2
- export interface AgentOptions extends GlobalOptions {
3
- once?: boolean;
4
- }
5
- export declare function runAgent(options: AgentOptions): Promise<void>;