@wpmoo/toolkit 0.9.5 → 0.9.7

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 CHANGED
@@ -1,373 +1,152 @@
1
1
  ![WPMoo Toolkit for Odoo development workflows](docs/assets/wpmoo-banner.png)
2
2
 
3
- [![CI](https://img.shields.io/github/actions/workflow/status/wpmoo-org/wpmoo-toolkit/ci.yml?branch=main&label=CI&style=flat-square)](https://github.com/wpmoo-org/wpmoo-toolkit/actions/workflows/ci.yml) [![GitHub](https://img.shields.io/badge/GitHub-181717?logo=github&style=flat-square)](https://github.com/wpmoo-org/wpmoo-toolkit) [![npm](https://img.shields.io/npm/v/@wpmoo/toolkit?label=npm&logo=npm&style=flat-square&color=blue)](https://www.npmjs.com/package/@wpmoo/toolkit) [![coverage](https://img.shields.io/codecov/c/github/wpmoo-org/wpmoo-toolkit?branch=main&label=coverage&logo=codecov&style=flat-square&color=blue)](https://codecov.io/gh/wpmoo-org/wpmoo-toolkit) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE) [![WPMoo Toolkit](https://img.shields.io/badge/WPMoo-Tool-714B67?style=flat-square)](https://github.com/wpmoo-org/wpmoo-toolkit) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-FFDD00?logo=buymeacoffee&logoColor=000000&style=flat-square)](https://www.buymeacoffee.com/cangir) [![Patreon](https://img.shields.io/badge/Patreon-Support-F96854?logo=patreon&logoColor=white&style=flat-square)](https://www.patreon.com/wpmoo)
3
+ [![CI](https://img.shields.io/github/actions/workflow/status/wpmoo-org/wpmoo-odoo/ci.yml?branch=main&label=CI&style=flat-square)](https://github.com/wpmoo-org/wpmoo-odoo/actions/workflows/ci.yml) [![GitHub](https://img.shields.io/badge/GitHub-181717?logo=github&style=flat-square)](https://github.com/wpmoo-org/wpmoo-odoo) [![npm](https://img.shields.io/npm/v/@wpmoo/odoo?label=npm&logo=npm&style=flat-square&color=blue)](https://www.npmjs.com/package/@wpmoo/odoo) [![coverage](https://img.shields.io/codecov/c/github/wpmoo-org/wpmoo-odoo?branch=main&label=coverage&logo=codecov&style=flat-square&color=blue)](https://codecov.io/gh/wpmoo-org/wpmoo-odoo) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE) [![Odoo Tool](https://img.shields.io/badge/Odoo-Tool-714B67?style=flat-square)](https://github.com/wpmoo-org/wpmoo-odoo) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-FFDD00?logo=buymeacoffee&logoColor=000000&style=flat-square)](https://www.buymeacoffee.com/cangir) [![Patreon](https://img.shields.io/badge/Patreon-Support-F96854?logo=patreon&logoColor=white&style=flat-square)](https://www.patreon.com/wpmoo)
4
4
 
5
5
  # WPMoo Toolkit
6
6
 
7
- WPMoo Toolkit is a development-first CLI for creating and operating Docker Compose based environments for Odoo, with source repositories managed as Git submodules.
7
+ WPMoo Toolkit is a free, MIT-licensed CLI for creating and operating repeatable Docker Compose based Odoo development environments.
8
8
 
9
- It gives Odoo teams a repeatable environment layout, a guided cockpit for daily work, direct commands for automation, and recovery tools that refresh generated files without touching product source code.
9
+ It is built for the everyday moments that tend to slow Odoo teams down: setting up a clean environment, keeping source repositories in a known layout, starting services, updating modules, testing changes, taking snapshots, restoring a database, and recovering generated files without touching product source code.
10
10
 
11
11
  WPMoo Toolkit is an independent project and is not affiliated with, endorsed by, or sponsored by Odoo S.A. Odoo is a trademark of Odoo S.A.
12
12
 
13
- ## Development Status
13
+ ## Why WPMoo Exists
14
14
 
15
- > [!IMPORTANT]
16
- > **Pre-1.0 active development:** WPMoo Toolkit has not reached `1.0.0` yet. Until the `1.0.0` release, use it as a preview tool for evaluation, local trials, and feedback rather than a dependency for critical production workflows. Setup conventions and command behavior may still change between pre-1.0 releases.
15
+ Odoo development has good building blocks. Docker Compose is familiar. OCA conventions are strong. Projects like Doodba and odoo.build have helped many teams think more clearly about Odoo infrastructure.
16
+
17
+ What we kept missing was a smaller, local-first workflow tool.
17
18
 
18
- ## Why WPMoo Toolkit
19
+ We wanted a generated development repository that stayed boring and recoverable. We wanted product source code to live in its own Git repositories, not be mixed with disposable runtime files. We wanted a cockpit that remembered the daily Odoo tasks developers actually run, without asking everyone to become an infrastructure specialist just to update a module or restore a snapshot.
19
20
 
20
- - Create a local Odoo development environment from a dev repository and one or more source repositories.
21
- - Keep product source repositories under `odoo/custom/src/private`, `odoo/custom/src/oca`, or `odoo/custom/src/external` as Git submodules pinned to the selected Odoo branch.
22
- - Copy Docker Compose resources from the standalone `wpmoo-org/odoo-docker-compose` resource instead of embedding large runtime assets in the TypeScript package.
23
- - Optionally copy project-local Agent Skills from `wpmoo-org/odoo-skills` into generated environments.
24
- - Use either a guided terminal cockpit or direct CLI commands for the same lifecycle tasks.
21
+ WPMoo is that layer. It does not try to replace the whole ecosystem. It gives an Odoo team a practical starting point, a stable folder layout, and a safer daily workflow.
22
+
23
+ ## What It Solves
24
+
25
+ - Creates a repeatable Odoo development environment from a product name, Odoo version, and one or more source repositories.
26
+ - Keeps Odoo source repositories under `private`, `oca`, or `external` categories as Git submodules in `odoo/custom/src/`.
27
+ - Provides a guided terminal cockpit for services, modules, database work, diagnostics, repository management, and maintenance.
28
+ - Includes direct commands for automation and CI-friendly terminal workflows.
29
+ - Adds recovery tools such as `status`, `doctor`, `snapshot`, `restore-snapshot`, and safe reset.
30
+ - Refreshes generated environment files without deleting product source code.
31
+
32
+ ## Development Status
33
+
34
+ > [!IMPORTANT]
35
+ > WPMoo Toolkit is still pre-1.0. Use it for evaluation, local trials, and feedback before relying on it for critical production workflows. Setup conventions and command behavior may still change before `1.0.0`.
25
36
 
26
37
  ## Prerequisites
27
38
 
28
39
  - Node.js `20.17+`
29
40
  - Git
30
- - Docker + Docker Compose for generated environment runtime commands
31
- - For GitHub-connected setup, install and authenticate GitHub CLI:
41
+ - Docker and Docker Compose for generated environment runtime commands
42
+ - Optional: GitHub CLI (`gh`) when you want setup to inspect or create GitHub repositories
32
43
 
33
- ```bash
34
- brew install gh
35
- gh auth login
36
- ```
44
+ Before environment setup starts, WPMoo checks Git, Docker, Docker Compose, and the Docker Engine. If a required tool is missing, the wizard stops before asking setup questions, shows official download links inline with the missing tools, and lets you check again or exit with `Ctrl+C`. Install the missing tools, restart your terminal if PATH changed, start Docker Desktop, then run `npx @wpmoo/toolkit` again.
37
45
 
38
- GitHub CLI (`gh`) is optional.
39
- WPMoo uses `gh` to inspect source/dev repositories and to create missing repos during setup. It also uses repository inspection to detect existing non-empty dev repositories and avoid overwriting them; if you do not want GitHub checks, keep setup local-only.
46
+ ```bash
47
+ brew install gh
48
+ gh auth login
49
+ ```
40
50
 
41
- The wizard currently offers Odoo `19.0`, `18.0`, `17.0`, and `16.0`. Generated
42
- environments now use the compact compose layout (`compose.yaml` with
43
- `compose/<env>.yaml` overlays). Legacy root-level
44
- `docker-compose_<version>.yml` layouts are still supported for compatibility.
51
+ GitHub CLI (`gh`) is optional. WPMoo can run local-only and source repositories can be added later.
45
52
 
46
- ## Quick Start
53
+ ## Quick Setup
47
54
 
48
- Run the guided wizard from a workspace directory:
55
+ Run the guided wizard from the workspace where you keep Odoo projects:
49
56
 
50
57
  ```bash
51
58
  npx @wpmoo/toolkit
52
59
  ```
53
60
 
54
- Short alias:
61
+ Short aliases are also available:
55
62
 
56
63
  ```bash
57
64
  npx wpmoo
65
+ npx @wpmoo/odoo
66
+ npx @wpmoo/odoo-dev
58
67
  ```
59
68
 
60
- Legacy package paths `npx @wpmoo/odoo` and `npx @wpmoo/odoo-dev` remain
61
- available as compatibility redirects to `@wpmoo/toolkit`.
69
+ Legacy package paths `npx @wpmoo/odoo` and `npx @wpmoo/odoo-dev` remain available for compatibility.
62
70
 
63
- If the current directory is not already a WPMoo environment, the CLI opens the create flow. It asks for the product slug, Odoo version, and environment folder. Choose any environment folder; the default is `./<product>_dev`.
71
+ When the current directory is not already a WPMoo environment, the CLI opens the create flow. It asks for a product slug, Odoo version, and environment folder. The default environment folder is `./<product>_dev`.
64
72
 
65
- After folder selection, connect Git/GitHub to use repository URLs. Choose local-only setup to skip Git/GitHub connection and source repo prompts. Add source repositories later from the cockpit (`Repositories` -> `add-repo`) or `npx @wpmoo/toolkit add-repo`.
66
-
67
- For non-interactive usage with repository URLs:
68
-
69
- Direct `create` commands keep the existing repo URL options; use `--target <path>` to choose a custom folder.
70
-
71
- ```bash
72
- npx @wpmoo/toolkit create \
73
- --product odoo_sample_module \
74
- --odoo-version 19.0 \
75
- --dev-repo-url https://github.com/example-org/odoo_sample_module_dev.git \
76
- --source-repo-url https://github.com/example-org/odoo_sample_module.git \
77
- --init-empty-repos
78
- ```
73
+ Choose any environment folder; the default is `./<product>_dev`. Choose local-only setup to skip Git/GitHub connection and source repo prompts. Add source repositories later from the cockpit (`Repositories` -> `add-repo`) or `npx @wpmoo/toolkit add-repo`. Direct `create` commands keep the existing repo URL options; use `--target <path>` to choose a custom folder.
79
74
 
80
- Add multiple source repositories by repeating `--source-repo-url`:
75
+ After setup, enter the generated environment and open the cockpit:
81
76
 
82
77
  ```bash
83
- npx @wpmoo/toolkit create \
84
- --product odoo_sample_module \
85
- --dev-repo-url https://github.com/example-org/odoo_sample_module_dev.git \
86
- --source-repo-url https://github.com/example-org/odoo_sample_module.git \
87
- --source-addons odoo_sample_module,odoo_sample_module_portal \
88
- --source-repo-url git@github.com:example-org/odoo_sample_module_reports.git \
89
- --source-path odoo_sample_module_reports \
90
- --source-addons odoo_sample_module_reports
78
+ cd <product>_dev
79
+ ./moo
91
80
  ```
92
81
 
93
- Preview planned files and commands without writing:
82
+ For non-interactive setup:
94
83
 
95
84
  ```bash
96
85
  npx @wpmoo/toolkit create \
97
86
  --product odoo_sample_module \
87
+ --odoo-version 19.0 \
98
88
  --dev-repo-url https://github.com/example-org/odoo_sample_module_dev.git \
99
89
  --source-repo-url https://github.com/example-org/odoo_sample_module.git \
100
- --dry-run
101
- ```
102
-
103
- ## The Cockpit
104
-
105
- Run the package with no command inside a generated environment:
106
-
107
- ```bash
108
- npx @wpmoo/toolkit
109
- ```
110
-
111
- The cockpit starts with a fast environment status summary, then opens a compact menu designed for repeated local work:
112
-
113
- ```text
114
- Command palette /
115
- Services
116
- Modules
117
- Database
118
- Diagnostics
119
- Repositories
120
- Maintenance
121
- Exit
122
- ```
123
-
124
- The UI is intentionally practical rather than decorative:
125
-
126
- - `Command palette /` searches slash commands such as `/test`, `/logs`, `/doctor`, and `/safe-reset`.
127
- - Category menus group related tasks for scanability: services, modules, database, diagnostics, repositories, and maintenance.
128
- - `Esc` returns from category menus to the top-level cockpit.
129
- - Empty states explain the next action, such as adding a source repo before selecting a module.
130
- - Risky commands such as stopping services, resetting databases, restoring snapshots, removing repos, removing modules, and safe reset ask for explicit confirmation.
131
- - Guided prompts collect common arguments for daily actions, including module names, database names, test modes, tags, snapshot names, and POT output paths.
132
-
133
- ## Cockpit Command Map
134
-
135
- | Category | Commands |
136
- | --- | --- |
137
- | Services | `start`, `stop`, `restart`, `logs`, `shell` |
138
- | Modules | `install`, `update`, `test`, `lint`, `pot`, `add-module`, `remove-module` |
139
- | Database | `psql`, `snapshot`, `restore-snapshot`, `resetdb` |
140
- | Diagnostics | `status`, `doctor` |
141
- | Repositories | `add-repo`, `remove-repo` |
142
- | Maintenance | `safe-reset` |
143
-
144
- Every cockpit action maps to a direct command, or to an equivalent management command such as `/safe-reset` mapping to `reset`, for scripting and repeatable terminal workflows.
145
-
146
- ## Direct Commands
147
-
148
- ```bash
149
- npx @wpmoo/toolkit --help
150
- npx @wpmoo/toolkit --version
151
-
152
- npx @wpmoo/toolkit status
153
- npx @wpmoo/toolkit status --json
154
- npx @wpmoo/toolkit doctor
155
- npx @wpmoo/toolkit doctor --json
156
- npx @wpmoo/toolkit doctor --fix
157
- npx @wpmoo/toolkit source list --json
158
- npx @wpmoo/toolkit add-repo --repo-url https://github.com/example-org/odoo_sample_module_reports.git
159
- npx @wpmoo/toolkit remove-repo --repo odoo_sample_module_reports
160
- npx @wpmoo/toolkit add-module --repo odoo_sample_module --module odoo_sample_module_base --source-type private
161
- npx @wpmoo/toolkit remove-module --repo odoo_sample_module --module odoo_sample_module_base --source-type private
162
- npx @wpmoo/toolkit reset --dry-run
163
- npx @wpmoo/toolkit reset
164
-
165
- npx @wpmoo/toolkit start
166
- npx @wpmoo/toolkit stop
167
- npx @wpmoo/toolkit restart
168
- npx @wpmoo/toolkit logs odoo
169
- npx @wpmoo/toolkit shell
170
- npx @wpmoo/toolkit psql postgres
171
-
172
- npx @wpmoo/toolkit install sale devel
173
- npx @wpmoo/toolkit update sale devel
174
- npx @wpmoo/toolkit test sale --db devel --mode update --tags /sale
175
- npx @wpmoo/toolkit lint
176
- npx @wpmoo/toolkit pot sale devel i18n/sale.pot
177
-
178
- npx @wpmoo/toolkit resetdb devel sale
179
- npx @wpmoo/toolkit snapshot devel before-update
180
- npx @wpmoo/toolkit restore-snapshot --dry-run before-update devel
181
- npx @wpmoo/toolkit restore-snapshot before-update devel
90
+ --init-empty-repos
182
91
  ```
183
92
 
184
- Daily action commands must be run from a generated environment root containing `.wpmoo/odoo.json`. They delegate to fixed scripts under `./scripts`; they do not search parent directories or run arbitrary script names.
93
+ ## Main Cockpit Menu
185
94
 
186
- ## Generated Environment Layout
187
-
188
- A generated environment is a separate Git repository, usually named `<product>_dev`, but the wizard and `--target` can use any folder. Product source code stays in child source repositories.
95
+ The cockpit is the daily workspace. It starts with environment status and then shows a compact menu:
189
96
 
190
97
  ```text
191
- odoo_sample_module_dev/
192
- |-- .wpmoo/
193
- | `-- odoo.json
194
- |-- .env.example
195
- |-- AGENTS.md
196
- |-- README.md
197
- |-- compose.yaml
198
- |-- compose/
199
- | |-- dev.yaml
200
- | |-- stage.yaml
201
- | `-- prod.yaml
202
- |-- config/
203
- | `-- odoo/
204
- | `-- odoo.conf
205
- |-- docs/
206
- | |-- appstore-release.md
207
- | `-- compose.md
208
- |-- resources/
209
- | `-- odoo/
210
- | `-- entrypoint.sh
211
- |-- moo
212
- |-- odoo/
213
- | `-- custom/
214
- | `-- src/
215
- | |-- private/
216
- | |-- oca/
217
- | `-- external/
218
- `-- scripts/
219
- ```
220
-
221
- Development uses `compose.yaml` plus `compose/dev.yaml` by default. Set
222
- `WPMOO_ENV=stage` or `WPMOO_ENV=prod` only after providing production-grade
223
- secrets and volumes.
224
-
225
- The metadata file `.wpmoo/odoo.json` records the product slug, selected Odoo version, dev repo URL, source repos, engine, external resource refs, ports, and template configuration. Status, doctor, daily actions, and safe reset use that metadata instead of guessing from the filesystem.
226
-
227
- ## Daily `./moo` Commands
228
-
229
- Generated environments include a local `./moo` dispatcher. It is the shortest path for everyday Compose and Odoo work:
98
+ WPMoo Cockpit
99
+ |-- Command palette /
100
+ | |-- search commands such as /test, /logs, /doctor, /safe-reset
101
+ |-- Services
102
+ | |-- start
103
+ | |-- stop
104
+ | |-- restart
105
+ | |-- logs
106
+ | `-- shell
107
+ |-- Modules
108
+ | |-- install
109
+ | |-- update
110
+ | |-- test
111
+ | |-- lint
112
+ | |-- pot
113
+ | |-- add-module
114
+ | `-- remove-module
115
+ |-- Database
116
+ | |-- psql
117
+ | |-- snapshot
118
+ | |-- restore-snapshot
119
+ | `-- resetdb
120
+ |-- Diagnostics
121
+ | |-- status
122
+ | `-- doctor
123
+ |-- Repositories
124
+ | |-- add-repo
125
+ | `-- remove-repo
126
+ |-- Maintenance
127
+ | `-- safe-reset
128
+ `-- Exit
129
+ ```
130
+
131
+ Every cockpit action maps to a direct command, so the same workflow can be used interactively or scripted:
230
132
 
231
133
  ```bash
232
- cp .env.example .env
233
-
234
134
  ./moo start
235
135
  ./moo logs odoo
236
- ./moo shell
237
- ./moo psql postgres
238
- ./moo restart
239
- ./moo stop
240
-
241
- ./moo install sale devel
242
- ./moo update sale devel
243
- ./moo test sale --db devel --mode update --tags /sale
244
- ./moo lint
245
- ./moo pot sale devel i18n/sale.pot
246
-
136
+ ./moo update sale
137
+ ./moo test sale
247
138
  ./moo snapshot devel before-update
248
139
  ./moo restore-snapshot --dry-run before-update devel
249
- ./moo restore-snapshot before-update devel
250
- ./moo resetdb devel sale
251
- ```
252
-
253
- `restore-snapshot --dry-run` validates the selected snapshot and prints the
254
- restore plan without changing the database or filestore. Generated environments
255
- also support `WPMOO_SNAPSHOT_RETENTION_COUNT` for pruning old snapshot files.
256
- When `WPMOO_ENV=stage` or `WPMOO_ENV=prod`, destructive database actions such
257
- as `resetdb` and real `restore-snapshot` require `WPMOO_ALLOW_DESTRUCTIVE=1`.
258
-
259
- Use `npx @wpmoo/toolkit ...` for package/operator commands such as `create`, `add-repo`, `remove-repo`, `add-module`, `remove-module`, `status`, `doctor`, and `reset`. Use `./moo ...` inside a generated environment for local daily Compose commands.
260
-
261
- ## Repository and Module Management
262
-
263
- Add a source repository after local-only setup from the cockpit or direct command:
264
-
265
- ```bash
266
- npx @wpmoo/toolkit add-repo \
267
- --repo-url https://github.com/example-org/odoo_sample_module_reports.git \
268
- --init-empty-repos
269
- ```
270
-
271
- Pin source repositories to dedicated source directories:
272
-
273
- ```bash
274
- npx @wpmoo/toolkit add-repo \
275
- --repo-url https://github.com/OCA/sale-workflow.git \
276
- --source-type oca
277
-
278
- npx @wpmoo/toolkit add-repo \
279
- --repo-url https://github.com/example-org/odoo_external_tool.git \
280
- --source-type external
281
- ```
282
-
283
- GitHub CLI is optional for repository setup. When it is available and authenticated, the interactive flow can:
284
-
285
- - detect the owner or organization from the current environment;
286
- - suggest repository URLs;
287
- - check whether the repository is accessible;
288
- - create inaccessible repositories after confirmation;
289
- - initialize empty repositories with the selected Odoo branch.
290
-
291
- Add a minimal Odoo module skeleton to a source repository:
292
-
293
- For module actions, `--source-type` selects the source directory (`private`, `oca`, or `external`). Default is `private`.
294
-
295
- ```bash
296
- npx @wpmoo/toolkit add-module \
297
- --repo odoo_sample_module \
298
- --module odoo_sample_module_base \
299
- --source-type oca
300
- ```
301
-
302
- Remove a module registration while keeping files:
303
-
304
- ```bash
305
- npx @wpmoo/toolkit remove-module \
306
- --repo odoo_sample_module \
307
- --module odoo_sample_module_base \
308
- --source-type oca
309
140
  ```
310
141
 
311
- Delete module files as well:
142
+ Module source actions also have direct commands. Default is `private`; pass `--source-type oca` or `--source-type external` for non-private source repositories:
312
143
 
313
144
  ```bash
314
- npx @wpmoo/toolkit remove-module \
315
- --repo odoo_sample_module \
316
- --module odoo_sample_module_base \
317
- --delete-files
145
+ npx @wpmoo/toolkit add-module --repo sale-workflow --module sale_order_line_no_discount --source-type oca
146
+ npx @wpmoo/toolkit remove-module --repo sale-workflow --module sale_order_line_no_discount --source-type oca
318
147
  ```
319
148
 
320
- Remove a source repository submodule:
321
-
322
- ```bash
323
- npx @wpmoo/toolkit remove-repo --repo odoo_sample_module_reports
324
- ```
325
-
326
- WPMoo refuses to remove a source repo submodule when that submodule has uncommitted changes.
327
-
328
- Generated environments also keep a deterministic source manifest at
329
- `odoo/custom/manifests/sources.yaml`. It mirrors source submodules from
330
- `.wpmoo/odoo.json` and `.gitmodules`, including source type, path, URL, branch,
331
- and addon boundaries.
332
-
333
- Inspect configured sources:
334
-
335
- ```bash
336
- npx @wpmoo/toolkit source list
337
- npx @wpmoo/toolkit source list --json
338
- ```
339
-
340
- Regenerate the manifest and metadata from the current metadata/gitmodule state:
341
-
342
- ```bash
343
- npx @wpmoo/toolkit source sync
344
- npx @wpmoo/toolkit source sync --json
345
- ```
346
-
347
- `source add` and `source remove` are direct aliases for the same repository
348
- operations:
349
-
350
- ```bash
351
- npx @wpmoo/toolkit source add \
352
- --repo-url https://github.com/OCA/server-tools.git \
353
- --source-type oca
354
-
355
- npx @wpmoo/toolkit source remove --repo server-tools --source-type oca
356
- ```
357
-
358
- ## Status, Doctor, and Recovery
359
-
360
- `status` is fast and offline. It reads local metadata and files only:
361
-
362
- ```bash
363
- npx @wpmoo/toolkit status
364
- npx @wpmoo/toolkit status --json
365
- ```
366
-
367
- It reports whether the environment is detected, which Odoo version is selected, how many source repos are configured, how many module candidates are present, which core files are missing, and the recommended next action.
368
-
369
- For automation and VS Code cockpit integration, all of these commands also support
370
- `--json`:
149
+ For automation and VS Code cockpit integration, selected commands support JSON output:
371
150
 
372
151
  ```bash
373
152
  npx @wpmoo/toolkit status --json
@@ -378,143 +157,16 @@ npx @wpmoo/toolkit doctor --json
378
157
 
379
158
  JSON output is optional; human-readable output remains the default.
380
159
 
381
- `doctor` performs deeper checks:
382
-
383
- ```bash
384
- npx @wpmoo/toolkit doctor
385
- ```
386
-
387
- It validates metadata, engine support, selected compose files, source repo paths,
388
- source manifest consistency, daily scripts, `.env` settings, Docker CLI access,
389
- Docker Compose access, GitHub CLI authentication when available, and PostgreSQL
390
- 18 compatibility in compose mount targets (for mounts to
391
- `/var/lib/postgresql/data` or `/var/lib/postgresql/18/docker`).
392
-
393
- Use `doctor --fix` for safe file-level repairs. It can normalize PostgreSQL 18
394
- mount targets and regenerate `odoo/custom/manifests/sources.yaml` from
395
- metadata plus `.gitmodules`, then it runs doctor again and reports any remaining
396
- manual issues.
397
-
398
- Safe reset refreshes generated environment files without deleting product source code:
399
-
400
- ```bash
401
- npx @wpmoo/toolkit reset --dry-run
402
- npx @wpmoo/toolkit reset
403
- ```
404
-
405
- Safe reset updates generated files such as `.wpmoo/odoo.json`, `moo`,
406
- `.gitignore`, `.env.example`, generated docs, compose assets, and optional
407
- Agent Skills. Compose overlays like `compose.yaml` and `compose/dev.yaml` are
408
- also refreshed from the current compose template source.
409
-
410
- Use `reset --dry-run` first when you want a deterministic preview of refreshed
411
- files and cleanup warnings without writing to the environment.
412
-
413
- It does not touch source repo folders under
414
- `odoo/custom/src/private`, module source code, Git history, remotes, or
415
- branches. It also preserves local runtime artifacts and custom source layout
416
- content:
417
-
418
- - `.env`, `data`, and `backups`
419
- - `odoo/custom/src/oca`, `odoo/custom/src/external`, `odoo/custom/patches`,
420
- `odoo/custom/manifests`, and their existing contents
421
-
422
- Legacy compose template paths from older scaffolds can remain
423
- (`docs/assets/`, `test/`, `.github/`) until you remove them manually.
160
+ ## Documentation
424
161
 
425
- Recommended recovery pattern:
426
-
427
- ```bash
428
- ./moo snapshot devel before-reset
429
- npx @wpmoo/toolkit reset --dry-run
430
- npx @wpmoo/toolkit reset
431
- npx @wpmoo/toolkit doctor --fix
432
- ./moo restore-snapshot --dry-run before-reset devel
433
- ./moo restore-snapshot before-reset devel
434
- ```
435
-
436
- ## External Resources
437
-
438
- WPMoo Toolkit keeps the package small by copying external resources into generated environments:
439
-
440
- ```text
441
- gh:wpmoo-org/odoo-docker-compose
442
- gh:wpmoo-org/odoo-skills
443
- ```
444
-
445
- Use the default resources:
446
-
447
- ```bash
448
- npx @wpmoo/toolkit create \
449
- --product odoo_sample_module \
450
- --source-repo-url https://github.com/example-org/odoo_sample_module.git \
451
- --agent-skills-template
452
- ```
453
-
454
- Pin external resource refs:
455
-
456
- ```bash
457
- npx @wpmoo/toolkit create \
458
- --product odoo_sample_module \
459
- --source-repo-url https://github.com/example-org/odoo_sample_module.git \
460
- --compose-template-ref v0.1.0 \
461
- --agent-skills-template \
462
- --agent-skills-template-ref v0.1.0
463
- ```
464
-
465
- Use local resource clones while developing the resource packages:
466
-
467
- ```bash
468
- git clone https://github.com/wpmoo-org/odoo-docker-compose ../odoo-docker-compose
469
- git clone https://github.com/wpmoo-org/odoo-skills ../odoo-skills
470
-
471
- npx @wpmoo/toolkit create \
472
- --engine compose \
473
- --compose-template-url ../odoo-docker-compose \
474
- --agent-skills-template \
475
- --agent-skills-template-url ../odoo-skills \
476
- --product odoo_sample_module \
477
- --source-repo-url https://github.com/example-org/odoo_sample_module.git
478
- ```
479
-
480
- More detail: [External Resources](docs/external-resources.md).
481
-
482
- ## Verification
483
-
484
- Run local package checks from the repository root:
485
-
486
- ```bash
487
- npm run typecheck
488
- npm test
489
- npm run test:coverage
490
- npm run build
491
- ```
492
-
493
- Generated environment behavior is covered by the operator-facing matrix in [Generated Environment Verification](docs/generated-environment-verification.md).
494
-
495
- ## Release
496
-
497
- The normal release path uses the repository helper and GitHub Actions trusted publishing:
498
-
499
- ```bash
500
- npm run release:check
501
- npm run typecheck
502
- npm test
503
- npm run build
504
- VERSION="$(node -p "require('./package.json').version")"
505
- git tag -a "v$VERSION" -m "Release v$VERSION"
506
- git push origin "v$VERSION"
507
- ```
162
+ - [External Resources](docs/external-resources.md)
163
+ - [Generated Environment Verification](docs/generated-environment-verification.md)
164
+ - Public documentation site: <https://wpmoo.org>
508
165
 
509
- If `npm run release:check` bumps `package.json` and `package-lock.json`, commit and push that version bump first, then rerun the release check before tagging. Publishing is handled by the `Publish` workflow after the tag is pushed.
166
+ ## License
510
167
 
511
- ## Sponsoring
168
+ WPMoo Toolkit is free software released under the [MIT License](LICENSE).
512
169
 
513
- Support ongoing WPMoo development through recurring or one-time sponsorship:
170
+ ## Acknowledgements
514
171
 
515
- <a href="https://www.buymeacoffee.com/cangir">
516
- <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me a Coffee" width="250">
517
- </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
518
- <a href="https://www.patreon.com/wpmoo">
519
- <img src="docs/assets/patreon-donate.png" alt="Support WPMoo on Patreon" width="250">
520
- </a>
172
+ WPMoo builds on the work of many open source projects and communities. Thanks to the maintainers and contributors behind Odoo, OCA, Docker Compose, TypeScript, Node.js, Inquirer, Vitest, VitePress, GitHub CLI, npm, and the wider Odoo developer ecosystem.