@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.
- package/README.md +79 -103
- package/dist/assemble/modules-copy.js +1 -1
- package/dist/assemble/modules-copy.js.map +1 -1
- package/dist/assemble/modules.js +1 -1
- package/dist/assemble/schema.js +1 -1
- package/dist/commands/create.js +1 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/doctor.d.ts +4 -1
- package/dist/commands/doctor.js +36 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/modules/default.d.ts +5 -0
- package/dist/commands/{default.js → modules/default.js} +64 -13
- package/dist/commands/modules/default.js.map +1 -0
- package/dist/commands/modules/install.d.ts +7 -0
- package/dist/commands/modules/install.js +121 -0
- package/dist/commands/modules/install.js.map +1 -0
- package/dist/commands/modules/lint.d.ts +3 -0
- package/dist/commands/{dev → modules}/lint.js +12 -11
- package/dist/commands/modules/lint.js.map +1 -0
- package/dist/commands/modules/remove.d.ts +6 -0
- package/dist/commands/modules/remove.js +47 -0
- package/dist/commands/modules/remove.js.map +1 -0
- package/dist/commands/modules/update.d.ts +8 -0
- package/dist/commands/{update.js → modules/update.js} +68 -27
- package/dist/commands/modules/update.js.map +1 -0
- package/dist/commands/modules/watch.d.ts +6 -0
- package/dist/commands/{watch.js → modules/watch.js} +16 -8
- package/dist/commands/modules/watch.js.map +1 -0
- package/dist/commands/shared.d.ts +1 -0
- package/dist/commands/shared.js +1 -1
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/template/sync.d.ts +7 -0
- package/dist/commands/{sync-template.js → template/sync.js} +10 -19
- package/dist/commands/template/sync.js.map +1 -0
- package/dist/core/deploy-compose.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -179
- package/dist/index.js.map +1 -1
- package/dist/lib/module-selector.d.ts +1 -0
- package/dist/lib/module-selector.js +13 -0
- package/dist/lib/module-selector.js.map +1 -0
- package/dist/lib/sink.d.ts +10 -1
- package/dist/lib/sink.js +42 -3
- package/dist/lib/sink.js.map +1 -1
- package/dist/program.d.ts +3 -0
- package/dist/program.js +166 -0
- package/dist/program.js.map +1 -0
- package/package.json +1 -1
- package/dist/commands/agent.d.ts +0 -5
- package/dist/commands/agent.js +0 -223
- package/dist/commands/agent.js.map +0 -1
- package/dist/commands/apply.d.ts +0 -7
- package/dist/commands/apply.js +0 -61
- package/dist/commands/apply.js.map +0 -1
- package/dist/commands/assemble.d.ts +0 -5
- package/dist/commands/assemble.js +0 -66
- package/dist/commands/assemble.js.map +0 -1
- package/dist/commands/config.d.ts +0 -7
- package/dist/commands/config.js +0 -120
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/default.d.ts +0 -2
- package/dist/commands/default.js.map +0 -1
- package/dist/commands/dev/lint.d.ts +0 -3
- package/dist/commands/dev/lint.js.map +0 -1
- package/dist/commands/install.d.ts +0 -4
- package/dist/commands/install.js +0 -48
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/sync-template.d.ts +0 -8
- package/dist/commands/sync-template.js.map +0 -1
- package/dist/commands/update.d.ts +0 -8
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/watch.d.ts +0 -5
- package/dist/commands/watch.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/@devbie/newbie-cli)
|
|
6
6
|
|
|
7
7
|
Command-line tool for the [Newbie](https://www.npmjs.com/package/@devbie/newbie)
|
|
8
|
-
backend framework. Scaffold new projects,
|
|
8
|
+
backend framework. Scaffold new projects, manage the enabled module set from the
|
|
9
9
|
newbie-modules registry, reconcile module copies and project wiring, and load
|
|
10
10
|
module-bundled command namespaces (e.g. `newbie secrets`) declared by the
|
|
11
11
|
installed modules.
|
|
12
12
|
|
|
13
|
+
The command surface is a written contract; see ADR-024.
|
|
14
|
+
|
|
13
15
|
## Requirements
|
|
14
16
|
|
|
15
17
|
- Node.js `>= 20`
|
|
@@ -42,18 +44,25 @@ npx @devbie/newbie-cli create my-app
|
|
|
42
44
|
cd my-app
|
|
43
45
|
npm install
|
|
44
46
|
|
|
45
|
-
# Enable/disable modules through
|
|
46
|
-
npx newbie
|
|
47
|
+
# Enable/disable modules through the interactive picker
|
|
48
|
+
npx newbie modules
|
|
47
49
|
|
|
48
|
-
# Reconcile project files with the enabled module list
|
|
49
|
-
npx newbie install
|
|
50
|
+
# Reconcile project files with the enabled module list (non-interactive)
|
|
51
|
+
npx newbie modules install -y
|
|
50
52
|
```
|
|
51
53
|
|
|
52
54
|
## Commands
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
Conventions (ADR-024): commands that write do so by default; `--dry-run` only
|
|
57
|
+
prints; `--check` is the CI gate and never writes. Selectors are positional
|
|
58
|
+
arguments, not flags.
|
|
59
|
+
|
|
60
|
+
### Project lifecycle
|
|
55
61
|
|
|
56
|
-
|
|
62
|
+
The current project is the CLI's implicit default resource, so these verbs sit
|
|
63
|
+
at the program root.
|
|
64
|
+
|
|
65
|
+
#### `newbie create <project-name>`
|
|
57
66
|
|
|
58
67
|
Scaffold a new project from the basic newbie template.
|
|
59
68
|
|
|
@@ -63,114 +72,66 @@ Scaffold a new project from the basic newbie template.
|
|
|
63
72
|
| `--template-ref <ref>` | Git ref of the newbie repository to clone the template from. |
|
|
64
73
|
| `--no-git-init` | Skip `git init` in the new project. |
|
|
65
74
|
|
|
66
|
-
### Module management
|
|
67
|
-
|
|
68
|
-
#### `newbie` (default, interactive)
|
|
69
|
-
|
|
70
|
-
Interactive module enable/disable flow. Running `newbie` with no command opens
|
|
71
|
-
the interactive selector.
|
|
72
|
-
|
|
73
|
-
#### `newbie install`
|
|
74
|
-
|
|
75
|
-
Reconcile the project with `modules.json`: copy missing modules, remove extra
|
|
76
|
-
ones, and regenerate wiring (Prisma schema, dependencies, environment
|
|
77
|
-
requirements).
|
|
78
|
-
|
|
79
|
-
| Option | Description |
|
|
80
|
-
| ----------- | -------------------------- |
|
|
81
|
-
| `-y, --yes` | Skip confirmation prompts. |
|
|
82
|
-
|
|
83
|
-
#### `newbie assemble`
|
|
84
|
-
|
|
85
|
-
Regenerate the module-derived deploy assets from the installed module set:
|
|
86
|
-
`deploy/compose.modules.yml` (datastore services rendered from the CLI
|
|
87
|
-
datastore registry, ADR-008) and the `@@newbie-modules` route block of
|
|
88
|
-
`deploy/Caddyfile.tmpl` (one `handle /<key>/*` block per module declaring
|
|
89
|
-
`publicNamespace`). The same renders run as a step of install/apply/update.
|
|
90
|
-
|
|
91
|
-
| Option | Description |
|
|
92
|
-
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
93
|
-
| `--check` | CI gate: print the diff and exit non-zero when the generated assets drift, or when an installed module differs from the registry checkout it must stay byte-identical to (ADR-021). |
|
|
94
|
-
|
|
95
|
-
#### `newbie config`
|
|
96
|
-
|
|
97
|
-
View or edit the enabled-module list in `modules.json` without touching project
|
|
98
|
-
files.
|
|
99
|
-
|
|
100
|
-
| Option | Description |
|
|
101
|
-
| ----------------------- | -------------------------------------------- |
|
|
102
|
-
| `--add <modules...>` | Enable module(s), space or comma separated. |
|
|
103
|
-
| `--remove <modules...>` | Disable module(s), space or comma separated. |
|
|
104
|
-
| `--list` | Print the current configuration. |
|
|
105
|
-
|
|
106
|
-
#### `newbie update`
|
|
107
|
-
|
|
108
|
-
Update enabled module copies to the registry HEAD commit. Local drift blocks the
|
|
109
|
-
update unless `--force` is used.
|
|
110
|
-
|
|
111
|
-
| Option | Description |
|
|
112
|
-
| ------------------------ | -------------------------------------------------------- |
|
|
113
|
-
| `--all` | Select every module with an available update. |
|
|
114
|
-
| `-y, --yes` | Skip confirmation prompts. |
|
|
115
|
-
| `--force` | Overwrite locally drifted module copies. |
|
|
116
|
-
| `--keys <moduleKeys...>` | Non-interactive module selector (comma/space separated). |
|
|
117
|
-
|
|
118
|
-
#### `newbie apply`
|
|
119
|
-
|
|
120
|
-
Non-interactively sync the module set declared in a JSON spec.
|
|
121
|
-
|
|
122
|
-
```json
|
|
123
|
-
{ "modules": ["module-a", "module-b"] }
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
| Option | Description |
|
|
127
|
-
| ----------------- | --------------------------------------------------- |
|
|
128
|
-
| `--config <file>` | Path to the declarative apply spec JSON (required). |
|
|
129
|
-
| `--ci` | CI mode marker (apply is always non-interactive). |
|
|
130
|
-
|
|
131
|
-
### Diagnostics
|
|
132
|
-
|
|
133
75
|
#### `newbie doctor`
|
|
134
76
|
|
|
135
77
|
Audit the installation: registry pins, copied modules, drift, environment
|
|
136
78
|
variables and Prisma wiring.
|
|
137
79
|
|
|
80
|
+
| Option | Description |
|
|
81
|
+
| -------- | ----------------------- |
|
|
82
|
+
| `--json` | Print findings as JSON. |
|
|
83
|
+
|
|
138
84
|
#### `newbie status`
|
|
139
85
|
|
|
140
|
-
Print machine-readable project state as JSON.
|
|
86
|
+
Print machine-readable project state as JSON (always JSON).
|
|
141
87
|
|
|
142
88
|
| Option | Description |
|
|
143
89
|
| --------- | ----------------------------------------------------- |
|
|
144
90
|
| `--drift` | Include content drift against pinned pristine copies. |
|
|
145
91
|
|
|
146
|
-
###
|
|
92
|
+
### `newbie modules`
|
|
147
93
|
|
|
148
|
-
|
|
94
|
+
The module resource namespace. A bare invocation opens the interactive
|
|
95
|
+
enable/disable picker on a TTY; on a non-TTY it degrades to a read-only
|
|
96
|
+
inventory and never writes.
|
|
149
97
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
for the `@@newbie-framework` blocks of `.env.example`, `.gitignore` and
|
|
154
|
-
`prisma/schema.prisma`. Generated (`newbie assemble` products) and
|
|
155
|
-
template-shipped host-owned files are skipped.
|
|
98
|
+
| Option | Description |
|
|
99
|
+
| -------- | ----------------------------------- |
|
|
100
|
+
| `--json` | Print the module inventory as JSON. |
|
|
156
101
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
| `--check` | CI gate: print the diff and exit non-zero when files drift. |
|
|
102
|
+
#### `newbie modules install [keys...]`
|
|
103
|
+
|
|
104
|
+
Without keys: reconcile the project with `modules.json` (copy missing modules,
|
|
105
|
+
remove extra ones, regenerate wiring). With keys: declare them in `modules.json`
|
|
106
|
+
(npm-style add) and install.
|
|
163
107
|
|
|
164
|
-
|
|
108
|
+
| Option | Description |
|
|
109
|
+
| ----------- | -------------------------------------------------------------------------------------------- |
|
|
110
|
+
| `--check` | CI gate: verify module copies, `modules.json` and generated wiring without writing anything. |
|
|
111
|
+
| `-y, --yes` | Skip confirmation prompts. |
|
|
165
112
|
|
|
166
|
-
|
|
167
|
-
changes (`apply`/`update`) and report receipts.
|
|
113
|
+
#### `newbie modules remove <keys...>`
|
|
168
114
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
115
|
+
Remove modules from the enabled set. A module still required by an enabled
|
|
116
|
+
module is rejected rather than silently re-added by the dependency closure.
|
|
117
|
+
|
|
118
|
+
| Option | Description |
|
|
119
|
+
| ----------- | -------------------------- |
|
|
120
|
+
| `-y, --yes` | Skip confirmation prompts. |
|
|
121
|
+
|
|
122
|
+
#### `newbie modules update [keys...]`
|
|
123
|
+
|
|
124
|
+
Update enabled module copies to the registry HEAD commit. Local drift blocks the
|
|
125
|
+
update unless `--force` is used. With no keys (or a non-TTY), every module with
|
|
126
|
+
an available update is selected.
|
|
172
127
|
|
|
173
|
-
|
|
128
|
+
| Option | Description |
|
|
129
|
+
| ----------- | --------------------------------------------------------------------------------------------------- |
|
|
130
|
+
| `--check` | CI gate: verify installed copies against the registry checkout (offline, no fetch); writes nothing. |
|
|
131
|
+
| `-y, --yes` | Skip confirmation prompts. |
|
|
132
|
+
| `--force` | Overwrite locally drifted module copies. |
|
|
133
|
+
|
|
134
|
+
#### `newbie modules watch [keys...]`
|
|
174
135
|
|
|
175
136
|
Watch the local newbie-modules registry and sync installed module sources into
|
|
176
137
|
the project on change. Useful for framework/module development.
|
|
@@ -179,12 +140,7 @@ the project on change. Useful for framework/module development.
|
|
|
179
140
|
| ------- | ----------------------------------------------------------- |
|
|
180
141
|
| `--all` | Watch every registry module instead of only installed ones. |
|
|
181
142
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
These commands run against the newbie-modules registry itself (inside the
|
|
185
|
-
registry checkout, not a consuming project).
|
|
186
|
-
|
|
187
|
-
#### `newbie dev lint`
|
|
143
|
+
#### `newbie modules lint`
|
|
188
144
|
|
|
189
145
|
Enforce the module layering rules (`feature` -> `capability` -> `infrastructure`
|
|
190
146
|
-> `datastore`) across registry sources: upward dependencies and same-layer
|
|
@@ -192,6 +148,26 @@ import cycles are errors; same-layer dependencies are warnings for review. A
|
|
|
192
148
|
`datastore` module must additionally be listed in the CLI datastore registry
|
|
193
149
|
(see ADR-008 D3).
|
|
194
150
|
|
|
151
|
+
Only valid inside a newbie-modules registry checkout (cwd must contain
|
|
152
|
+
`packages/modules/`); the command does not fall back to a cached registry.
|
|
153
|
+
|
|
154
|
+
### `newbie template`
|
|
155
|
+
|
|
156
|
+
#### `newbie template sync [paths...]`
|
|
157
|
+
|
|
158
|
+
Sync framework-owned template files from the template, driven by the ADR-009
|
|
159
|
+
ownership registry: whole-file sync for `main.ts`, `tsconfig*`, `nest-cli.json`,
|
|
160
|
+
`prisma.config.ts` and the static `deploy/` stack; block sync for the
|
|
161
|
+
`@@newbie-framework` blocks of `.env.example`, `.gitignore` and
|
|
162
|
+
`prisma/schema.prisma`. Generated and template-shipped host-owned files are
|
|
163
|
+
skipped. Path prefixes (e.g. `deploy/`) restrict the scope.
|
|
164
|
+
|
|
165
|
+
| Option | Description |
|
|
166
|
+
| ----------------------- | ----------------------------------------------------------------- |
|
|
167
|
+
| `--template-path <dir>` | Use a local template directory instead of cloning the repository. |
|
|
168
|
+
| `--template-ref <ref>` | Git ref (e.g. a template tag) to sync from. |
|
|
169
|
+
| `--check` | CI gate: print the diff and exit non-zero when files drift. |
|
|
170
|
+
|
|
195
171
|
### Module-provided commands
|
|
196
172
|
|
|
197
173
|
Modules can attach their own command namespace to the CLI. When an installed
|
|
@@ -234,7 +210,7 @@ Every registry module carries a `newbie.module.json` at its root:
|
|
|
234
210
|
| `moduleDependencies` | string[] | Registry module keys imported via `@modules/<key>`; installs expand to the transitive closure. |
|
|
235
211
|
| `cli` | string | Command namespace this module exposes (see "Module-provided commands"). |
|
|
236
212
|
| `sdk` | string | Package name of the companion SDK shipped alongside the module (pairing record for tooling). |
|
|
237
|
-
| `publicNamespace` | boolean | Claim the public URL namespace `/<key>/*`;
|
|
213
|
+
| `publicNamespace` | boolean | Claim the public URL namespace `/<key>/*`; install renders a Caddy handle block (ADR-008). |
|
|
238
214
|
|
|
239
215
|
## Global options
|
|
240
216
|
|
|
@@ -37,7 +37,7 @@ async function addModules(params) {
|
|
|
37
37
|
if (missing.length > 0) {
|
|
38
38
|
const detail = missing.map(({ key, source }) => ` - ${key} (${source})`).join("\n");
|
|
39
39
|
throw new errors_1.CliError(`Registry checkout ${registry.sourceCommit ?? "unknown"} is missing module source(s):\n${detail}\n` +
|
|
40
|
-
`Point NEWBIE_MODULES_REF at a ref that carries them, then run 'newbie install'.`);
|
|
40
|
+
`Point NEWBIE_MODULES_REF at a ref that carries them, then run 'newbie modules install'.`);
|
|
41
41
|
}
|
|
42
42
|
for (const key of keys) {
|
|
43
43
|
await sink.copy((0, registry_1.moduleRootInRegistry)(registry.root, key), node_path_1.default.posix.join(paths_1.MODULES_DIR, key));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-copy.js","sourceRoot":"","sources":["../../src/assemble/modules-copy.ts"],"names":[],"mappings":";;;;;AAYA,kDAMC;AAQD,sEAUC;AAOD,gCAuBC;AAGD,sCAMC;AA3ED,0DAA6B;AAE7B,8CAAiD;AACjD,8CAAyE;AACzE,0CAAyC;AACzC,4CAA4C;AAO5C,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,mBAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,iBAAQ,CAAC,uCAAuC,mBAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAQM,KAAK,UAAU,6BAA6B,CACjD,YAAoB,EACpB,IAAuB;IAEvB,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAA,+BAAoB,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAOM,KAAK,UAAU,UAAU,CAAC,MAKhC;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,IAAI,iBAAQ,CAChB,qBAAqB,QAAQ,CAAC,YAAY,IAAI,SAAS,kCAAkC,MAAM,IAAI;YACjG,
|
|
1
|
+
{"version":3,"file":"modules-copy.js","sourceRoot":"","sources":["../../src/assemble/modules-copy.ts"],"names":[],"mappings":";;;;;AAYA,kDAMC;AAQD,sEAUC;AAOD,gCAuBC;AAGD,sCAMC;AA3ED,0DAA6B;AAE7B,8CAAiD;AACjD,8CAAyE;AACzE,0CAAyC;AACzC,4CAA4C;AAO5C,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,mBAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,iBAAQ,CAAC,uCAAuC,mBAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAQM,KAAK,UAAU,6BAA6B,CACjD,YAAoB,EACpB,IAAuB;IAEvB,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAA,+BAAoB,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAOM,KAAK,UAAU,UAAU,CAAC,MAKhC;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,IAAI,iBAAQ,CAChB,qBAAqB,QAAQ,CAAC,YAAY,IAAI,SAAS,kCAAkC,MAAM,IAAI;YACjG,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAA,+BAAoB,EAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAGM,KAAK,UAAU,aAAa,CAAC,MAAsC;IACxE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
package/dist/assemble/modules.js
CHANGED
|
@@ -6,7 +6,7 @@ const module_manifest_1 = require("../core/module-manifest");
|
|
|
6
6
|
const issues_1 = require("../lib/issues");
|
|
7
7
|
const module_install_1 = require("../lib/module-install");
|
|
8
8
|
const DO_NOT_EDIT_HEADER = `// THIS FILE IS GENERATED BY @devbie/newbie-cli. DO NOT EDIT.
|
|
9
|
-
// Run 'newbie install' to regenerate this file.
|
|
9
|
+
// Run 'newbie modules install' to regenerate this file.
|
|
10
10
|
|
|
11
11
|
`;
|
|
12
12
|
const EMPTY_MODULE_TEMPLATE = `${DO_NOT_EDIT_HEADER}import {Global, Module} from '@nestjs/common';
|
package/dist/assemble/schema.js
CHANGED
|
@@ -12,7 +12,7 @@ const issues_1 = require("../lib/issues");
|
|
|
12
12
|
const module_install_1 = require("../lib/module-install");
|
|
13
13
|
const fs_util_1 = require("../lib/fs-util");
|
|
14
14
|
const DO_NOT_EDIT_HEADER = `// THIS FILE IS MANAGED BY @devbie/newbie-cli. DO NOT EDIT.
|
|
15
|
-
// Run 'newbie install' to regenerate this file.
|
|
15
|
+
// Run 'newbie modules install' to regenerate this file.
|
|
16
16
|
|
|
17
17
|
`;
|
|
18
18
|
async function readOptionalText(cwd, relativePath) {
|
package/dist/commands/create.js
CHANGED
|
@@ -71,6 +71,6 @@ async function runCreate(options) {
|
|
|
71
71
|
await (0, exec_1.execCapture)("git", ["init", "--quiet"], { cwd: targetDir });
|
|
72
72
|
}
|
|
73
73
|
console.info((0, colorette_1.green)((0, colorette_1.bold)("\n✓ Project created.\n")));
|
|
74
|
-
console.info(`Next steps:\n cd ${name}\n npm install\n newbie
|
|
74
|
+
console.info(`Next steps:\n cd ${name}\n npm install\n newbie modules\n`);
|
|
75
75
|
}
|
|
76
76
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import { GlobalOptions } from "./shared";
|
|
2
|
-
export
|
|
2
|
+
export interface DoctorOptions extends GlobalOptions {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function runDoctor(options: DoctorOptions): Promise<void>;
|
package/dist/commands/doctor.js
CHANGED
|
@@ -21,11 +21,13 @@ const registry_1 = require("../lib/registry");
|
|
|
21
21
|
const module_install_1 = require("../lib/module-install");
|
|
22
22
|
const modules_state_2 = require("../lib/modules-state");
|
|
23
23
|
async function runDoctor(options) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
if (!options.json) {
|
|
25
|
+
console.info(figlet_1.default.textSync("Newbie", {
|
|
26
|
+
font: "Epic",
|
|
27
|
+
width: 80,
|
|
28
|
+
whitespaceBreak: true,
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
29
31
|
const cwd = node_path_1.default.resolve(options.cwd);
|
|
30
32
|
const findings = [];
|
|
31
33
|
const error = (message) => {
|
|
@@ -35,15 +37,15 @@ async function runDoctor(options) {
|
|
|
35
37
|
findings.push({ level: "notice", message });
|
|
36
38
|
};
|
|
37
39
|
if (!(await (0, modules_state_2.stateExists)(cwd))) {
|
|
38
|
-
throw new errors_1.CliError(`${paths_1.MODULES_JSON} not found. Run 'newbie
|
|
40
|
+
throw new errors_1.CliError(`${paths_1.MODULES_JSON} not found. Run 'newbie modules' to declare modules first.`);
|
|
39
41
|
}
|
|
40
42
|
const state = await (0, modules_state_2.readModulesState)(cwd);
|
|
41
43
|
const keys = (0, modules_state_1.moduleKeys)(state);
|
|
42
44
|
const registry = await (0, registry_1.resolveRegistry)({ fetch: false });
|
|
43
|
-
if (registry) {
|
|
45
|
+
if (registry && !options.json) {
|
|
44
46
|
console.info(`Registry: ${registry.local ? "local " : "cached "}${registry.root} @ ${registry.sourceCommit?.slice(0, 7) ?? "unknown"}\n`);
|
|
45
47
|
}
|
|
46
|
-
else {
|
|
48
|
+
else if (!registry) {
|
|
47
49
|
notice("Registry unavailable offline; drift checks skipped (set NEWBIE_MODULES_PATH or run an online command).");
|
|
48
50
|
}
|
|
49
51
|
const known = new Set(registry ? await (0, registry_1.listRegistryKeys)(registry.root) : []);
|
|
@@ -52,10 +54,10 @@ async function runDoctor(options) {
|
|
|
52
54
|
error(`Module '${key}' is not present in the registry.`);
|
|
53
55
|
}
|
|
54
56
|
if (!(await (0, fs_util_1.fileExists)(cwd, paths_1.MODULES_MODULE_TS))) {
|
|
55
|
-
error(`Generated ${paths_1.MODULES_MODULE_TS} is missing; run 'newbie install'.`);
|
|
57
|
+
error(`Generated ${paths_1.MODULES_MODULE_TS} is missing; run 'newbie modules install'.`);
|
|
56
58
|
}
|
|
57
59
|
if (!(await (0, fs_util_1.fileExists)(cwd, paths_1.MODULES_CONFIG_TS))) {
|
|
58
|
-
error(`Generated ${paths_1.MODULES_CONFIG_TS} is missing; run 'newbie install'.`);
|
|
60
|
+
error(`Generated ${paths_1.MODULES_CONFIG_TS} is missing; run 'newbie modules install'.`);
|
|
59
61
|
}
|
|
60
62
|
const moduleGraph = new Map();
|
|
61
63
|
const missingEnv = await (0, check_1.collectMissingEnv)(cwd, keys);
|
|
@@ -67,7 +69,7 @@ async function runDoctor(options) {
|
|
|
67
69
|
for (const key of keys) {
|
|
68
70
|
const label = (0, colorette_1.bold)(key);
|
|
69
71
|
if (!(await (0, fs_util_1.fileExists)(cwd, `${paths_1.MODULES_DIR}/${key}`))) {
|
|
70
|
-
error(`${label}: module directory missing; run 'newbie install'.`);
|
|
72
|
+
error(`${label}: module directory missing; run 'newbie modules install'.`);
|
|
71
73
|
continue;
|
|
72
74
|
}
|
|
73
75
|
const manifest = await (0, module_install_1.readInstalledManifest)(cwd, key);
|
|
@@ -78,7 +80,7 @@ async function runDoctor(options) {
|
|
|
78
80
|
moduleGraph.set(key, manifest.moduleDependencies ?? []);
|
|
79
81
|
if (manifest.schema) {
|
|
80
82
|
if (!(await (0, fs_util_1.fileExists)(cwd, node_path_1.default.posix.join(paths_1.PRISMA_SCHEMA_MODELS_DIR, `${key}.prisma`)))) {
|
|
81
|
-
error(`${label}: ${paths_1.PRISMA_SCHEMA_MODELS_DIR}/${key}.prisma missing; run 'newbie install'.`);
|
|
83
|
+
error(`${label}: ${paths_1.PRISMA_SCHEMA_MODELS_DIR}/${key}.prisma missing; run 'newbie modules install'.`);
|
|
82
84
|
}
|
|
83
85
|
if (datasourceSchemas && !datasourceSchemas.includes((0, prisma_schema_1.moduleSchemaNamespace)(key))) {
|
|
84
86
|
error(`${label}: datasource schemas lacks '${(0, prisma_schema_1.moduleSchemaNamespace)(key)}'.`);
|
|
@@ -89,7 +91,7 @@ async function runDoctor(options) {
|
|
|
89
91
|
}
|
|
90
92
|
const record = state.modules.find((entry) => entry.key === key);
|
|
91
93
|
if (registry?.sourceCommit && record?.sourceCommit && record.sourceCommit !== registry.sourceCommit) {
|
|
92
|
-
notice(`${label}: update available (${record.sourceCommit.slice(0, 7)} -> ${registry.sourceCommit.slice(0, 7)}); run 'newbie update'.`);
|
|
94
|
+
notice(`${label}: update available (${record.sourceCommit.slice(0, 7)} -> ${registry.sourceCommit.slice(0, 7)}); run 'newbie modules update'.`);
|
|
93
95
|
}
|
|
94
96
|
if (manifest.deprecated) {
|
|
95
97
|
notice(`${label}: deprecated — ${manifest.deprecated}`);
|
|
@@ -110,7 +112,7 @@ async function runDoctor(options) {
|
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
114
|
for (const { module, dependency } of (0, module_closure_1.findMissingEnabledModules)(keys, moduleGraph)) {
|
|
113
|
-
error(`'${dependency}' must be enabled because module '${module}' declares it as a module dependency; run 'newbie install'.`);
|
|
115
|
+
error(`'${dependency}' must be enabled because module '${module}' declares it as a module dependency; run 'newbie modules install'.`);
|
|
114
116
|
}
|
|
115
117
|
const copied = new Set((await promises_1.default
|
|
116
118
|
.readdir(node_path_1.default.resolve(cwd, paths_1.MODULES_DIR), { withFileTypes: true })
|
|
@@ -121,7 +123,7 @@ async function runDoctor(options) {
|
|
|
121
123
|
if (!keys.includes(dir)) {
|
|
122
124
|
const isRegistryModule = registry ? (await (0, registry_1.readRegistryModule)(registry.root, dir)) !== null : false;
|
|
123
125
|
if (isRegistryModule) {
|
|
124
|
-
notice(`Extra module directory '${dir}' not declared in ${paths_1.MODULES_JSON}; run 'newbie install' to remove it.`);
|
|
126
|
+
notice(`Extra module directory '${dir}' not declared in ${paths_1.MODULES_JSON}; run 'newbie modules install' to remove it.`);
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
}
|
|
@@ -132,11 +134,29 @@ async function runDoctor(options) {
|
|
|
132
134
|
continue;
|
|
133
135
|
const orphanKey = file.slice(0, -".prisma".length);
|
|
134
136
|
if (!enabledKeySet.has(orphanKey)) {
|
|
135
|
-
error(`Orphan prisma fragment '${paths_1.PRISMA_SCHEMA_MODELS_DIR}/${file}' (module '${orphanKey}' not enabled); run 'newbie install' to remove it.`);
|
|
137
|
+
error(`Orphan prisma fragment '${paths_1.PRISMA_SCHEMA_MODELS_DIR}/${file}' (module '${orphanKey}' not enabled); run 'newbie modules install' to remove it.`);
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
140
|
const errors = findings.filter((finding) => finding.level === "error");
|
|
139
141
|
const notices = findings.filter((finding) => finding.level === "notice");
|
|
142
|
+
if (options.json) {
|
|
143
|
+
console.info(JSON.stringify({
|
|
144
|
+
cwd,
|
|
145
|
+
registry: registry
|
|
146
|
+
? {
|
|
147
|
+
available: true,
|
|
148
|
+
local: registry.local,
|
|
149
|
+
path: registry.root,
|
|
150
|
+
sourceCommit: registry.sourceCommit,
|
|
151
|
+
}
|
|
152
|
+
: { available: false },
|
|
153
|
+
errors: errors.map((finding) => finding.message),
|
|
154
|
+
notices: notices.map((finding) => finding.message),
|
|
155
|
+
}, null, 2));
|
|
156
|
+
if (errors.length > 0)
|
|
157
|
+
process.exitCode = 1;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
140
160
|
for (const finding of errors)
|
|
141
161
|
console.info((0, colorette_1.red)(` ✗ ${finding.message}`));
|
|
142
162
|
for (const finding of notices)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":";;;;;AAqCA,8BAoMC;AAzOD,gEAAkC;AAClC,0DAA6B;AAC7B,oDAA4B;AAC5B,yCAAiE;AAEjE,8CAO4B;AAC5B,yCAA8C;AAC9C,2DAAmE;AACnE,yDAAmD;AACnD,yDAAqF;AACrF,wCAAiD;AACjD,0CAAyC;AACzC,wCAA+E;AAC/E,4CAA4C;AAC5C,8CAAwF;AACxF,0DAA8D;AAC9D,wDAAqE;AAc9D,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CACV,gBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACxB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,eAAe,EAAE,IAAI;SACtB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAQ,EAAE;QACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,OAAe,EAAQ,EAAE;QACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IAGF,IAAI,CAAC,CAAC,MAAM,IAAA,2BAAW,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,iBAAQ,CAAC,GAAG,oBAAY,4DAA4D,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAA,0BAAU,EAAC,KAAK,CAAC,CAAC;IAG/B,MAAM,QAAQ,GAAG,MAAM,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CACV,aAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,IAAI,CAC5H,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,wGAAwG,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAA,2BAAgB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,WAAW,GAAG,mCAAmC,CAAC,CAAC;IAChF,CAAC;IAGD,IAAI,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,yBAAiB,CAAC,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,aAAa,yBAAiB,4CAA4C,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,yBAAiB,CAAC,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,aAAa,yBAAiB,4CAA4C,CAAC,CAAC;IACpF,CAAC;IAGD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,0BAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7G,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAA,qCAAqB,EAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,iCAAiC,0BAAkB,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAA,gBAAI,EAAC,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,GAAG,mBAAW,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,GAAG,KAAK,2DAA2D,CAAC,CAAC;YAC3E,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAA,sCAAqB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,GAAG,KAAK,6CAA6C,CAAC,CAAC;YAC7D,SAAS;QACX,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAwB,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,KAAK,CAAC,GAAG,KAAK,KAAK,gCAAwB,IAAI,GAAG,gDAAgD,CAAC,CAAC;YACtG,CAAC;YACD,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAA,qCAAqB,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjF,KAAK,CAAC,GAAG,KAAK,+BAA+B,IAAA,qCAAqB,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,KAAK,iBAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAChE,IAAI,QAAQ,EAAE,YAAY,IAAI,MAAM,EAAE,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAAE,CAAC;YACpG,MAAM,CACJ,GAAG,KAAK,uBAAuB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,iCAAiC,CACxI,CAAC;QACJ,CAAC;QAGD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,KAAK,kBAAkB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;QAGD,IAAI,QAAQ,IAAI,MAAM,EAAE,YAAY,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAsB,EAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAClF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,MAAM,IAAA,+BAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC/E,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG;wBACd,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;wBAClD,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;wBAC9C,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;qBACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACb,KAAK,CAAC,GAAG,KAAK,2BAA2B,OAAO,GAAG,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,KAAK,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,IAAA,0CAAyB,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;QAClF,KAAK,CACH,IAAI,UAAU,qCAAqC,MAAM,qEAAqE,CAC/H,CAAC;IACJ,CAAC;IAGD,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,CACE,MAAM,kBAAE;SACL,OAAO,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAW,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAChE,KAAK,CAAC,GAA+B,EAAE,CAAC,EAAE,CAAC,CAC/C;SACE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,6BAAkB,EAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACpG,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,CACJ,2BAA2B,GAAG,qBAAqB,oBAAY,8CAA8C,CAC9G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gCAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3G,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,SAAS;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,KAAK,CACH,2BAA2B,gCAAwB,IAAI,IAAI,cAAc,SAAS,4DAA4D,CAC/I,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IAEzE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,SAAS,CACZ;YACE,GAAG;YACH,QAAQ,EAAE,QAAQ;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACpC;gBACH,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;YACxB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YAChD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SACnD,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,IAAA,eAAG,EAAC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,OAAO,IAAI,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,IAAA,kBAAM,EAAC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,IAAA,iBAAK,EAAC,8BAA8B,CAAC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,IAAA,gBAAI,EAAC,KAAK,MAAM,CAAC,MAAM,cAAc,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,IAAA,gBAAI,EAAC,2DAA2D,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,iBAAQ,CAAC,gBAAgB,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -1,24 +1,75 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.runModules = runModules;
|
|
4
4
|
const prompts_1 = require("@inquirer/prompts");
|
|
5
5
|
const colorette_1 = require("colorette");
|
|
6
|
-
const pipeline_1 = require("
|
|
7
|
-
const modules_state_1 = require("
|
|
8
|
-
const registry_1 = require("
|
|
9
|
-
const
|
|
10
|
-
|
|
6
|
+
const pipeline_1 = require("../../assemble/pipeline");
|
|
7
|
+
const modules_state_1 = require("../../core/modules-state");
|
|
8
|
+
const registry_1 = require("../../lib/registry");
|
|
9
|
+
const modules_state_2 = require("../../lib/modules-state");
|
|
10
|
+
const shared_1 = require("../shared");
|
|
11
|
+
function isInteractive() {
|
|
12
|
+
return Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
13
|
+
}
|
|
14
|
+
async function runModules(options) {
|
|
15
|
+
if (options.json) {
|
|
16
|
+
await printJson(options.cwd);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!isInteractive()) {
|
|
20
|
+
await printInventory(options.cwd);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await runPicker(options);
|
|
24
|
+
}
|
|
25
|
+
async function collectInventory(cwd) {
|
|
26
|
+
const state = await (0, modules_state_2.readModulesState)(cwd);
|
|
27
|
+
const enabled = (0, modules_state_1.moduleKeys)(state);
|
|
28
|
+
const enabledSet = new Set(enabled);
|
|
29
|
+
const registry = await (0, registry_1.resolveRegistry)({ fetch: false });
|
|
30
|
+
const registryModules = registry ? await (0, registry_1.listRegistryModules)(registry.root) : [];
|
|
31
|
+
const deprecated = (0, registry_1.deprecatedNoticesOf)(registryModules);
|
|
32
|
+
const modules = registryModules.map((entry) => ({
|
|
33
|
+
key: entry.key,
|
|
34
|
+
enabled: enabledSet.has(entry.key),
|
|
35
|
+
deprecated: deprecated.get(entry.key) ?? null,
|
|
36
|
+
}));
|
|
37
|
+
for (const key of enabled) {
|
|
38
|
+
if (!modules.some((entry) => entry.key === key)) {
|
|
39
|
+
modules.push({ key, enabled: true, deprecated: null });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
registry: registry
|
|
44
|
+
? { available: true, local: registry.local, path: registry.root, sourceCommit: registry.sourceCommit }
|
|
45
|
+
: { available: false },
|
|
46
|
+
enabled,
|
|
47
|
+
modules,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async function printJson(cwd) {
|
|
51
|
+
console.info(JSON.stringify(await collectInventory(cwd), null, 2));
|
|
52
|
+
}
|
|
53
|
+
async function printInventory(cwd) {
|
|
54
|
+
const inventory = await collectInventory(cwd);
|
|
55
|
+
if (!inventory.registry.available) {
|
|
56
|
+
console.info("Registry unavailable offline; showing enabled modules only.");
|
|
57
|
+
}
|
|
58
|
+
if (inventory.enabled.length === 0) {
|
|
59
|
+
console.info("No modules are enabled.");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
console.info((0, colorette_1.green)("enabled modules:"));
|
|
63
|
+
for (const key of inventory.enabled) {
|
|
64
|
+
const entry = inventory.modules.find((module) => module.key === key);
|
|
65
|
+
console.info(` - ${key}${entry?.deprecated ? " [deprecated]" : ""}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async function runPicker(options) {
|
|
11
69
|
const { ctx } = await (0, shared_1.createContext)(options, {
|
|
12
70
|
ensureConfig: true,
|
|
13
71
|
fetch: true,
|
|
14
72
|
});
|
|
15
|
-
(0, shared_1.printBanner)();
|
|
16
|
-
console.info("What is Newbie?");
|
|
17
|
-
console.info(" -----------------------------------------------------------");
|
|
18
|
-
console.info("| Newbie is a backend development framework based on NestJS.|");
|
|
19
|
-
console.info("| Reuse ready-made modules (account, workflow, ...) and |");
|
|
20
|
-
console.info("| flexibly add or remove them in your project. |");
|
|
21
|
-
console.info(" -----------------------------------------------------------\n");
|
|
22
73
|
const registryModules = await (0, registry_1.listRegistryModules)(ctx.registry.root);
|
|
23
74
|
const deprecatedNotices = (0, registry_1.deprecatedNoticesOf)(registryModules);
|
|
24
75
|
const enabled = (0, modules_state_1.moduleKeys)(ctx.state).filter((key) => registryModules.some((entry) => entry.key === key));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/commands/modules/default.ts"],"names":[],"mappings":"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"}
|