@basaltbytes/odoo-agentic-dev 0.1.0-beta.2 → 0.1.0-beta.3
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 +46 -3
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.js +2 -1
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/eject.d.ts +74 -0
- package/dist/commands/eject.js +331 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/info.js +1 -1
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/json-report.d.ts +39 -6
- package/dist/commands/json-report.js +55 -9
- package/dist/commands/json-report.js.map +1 -1
- package/dist/commands/link-source.js +1 -1
- package/dist/commands/link-source.js.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/logs.js +1 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/prune.js +1 -1
- package/dist/commands/prune.js.map +1 -1
- package/dist/commands/psql.js +1 -1
- package/dist/commands/psql.js.map +1 -1
- package/dist/commands/reset-db.js +4 -2
- package/dist/commands/reset-db.js.map +1 -1
- package/dist/commands/setup.js +5 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/shell.js +1 -1
- package/dist/commands/shell.js.map +1 -1
- package/dist/commands/test.js +7 -5
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/up.d.ts +11 -0
- package/dist/commands/up.js +15 -1
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/worktree.d.ts +1 -7
- package/dist/commands/worktree.js +5 -13
- package/dist/commands/worktree.js.map +1 -1
- package/dist/core/compose-model.d.ts +20 -2
- package/dist/core/compose-model.js +43 -13
- package/dist/core/compose-model.js.map +1 -1
- package/dist/errors/errors.d.ts +9 -1
- package/dist/errors/errors.js +8 -0
- package/dist/errors/errors.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,6 +48,10 @@ pnpm exec odoo-agentic-dev up # start Odoo + companion apps
|
|
|
48
48
|
pnpm exec odoo-agentic-dev info # inspect the derived context at any time
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
## For Coding Agents
|
|
52
|
+
|
|
53
|
+
The CLI is designed to be driven by coding agents: deterministic derivation, no interactive prompts, meaningful exit codes, `--json` everywhere, and guard rails on destructive actions. To make your agents use it well, paste the block in [docs/AGENTS-SNIPPET.md](docs/AGENTS-SNIPPET.md) into your project's `CLAUDE.md` / `AGENTS.md` — it covers the daily commands, the env contract (`run -- <cmd>` instead of hand-assembled variables), and the rule that Docker Compose is only reached through `odoo-agentic-dev compose --`.
|
|
54
|
+
|
|
51
55
|
## Configuration Reference
|
|
52
56
|
|
|
53
57
|
Every field, with defaults shown in comments. Only `project.id`, `project.dbPrefix`, `odoo.version`, and `odoo.addons` are required — a good config states only what deviates from the defaults.
|
|
@@ -409,13 +413,33 @@ With `--hook-json` (the WorktreeRemove hook contract) the `{worktree_path}` payl
|
|
|
409
413
|
|
|
410
414
|
`info`, `list`, `doctor`, and `prune` have dedicated JSON shapes and keep stdout pure JSON (warnings go to stderr).
|
|
411
415
|
|
|
412
|
-
The lifecycle commands — `setup`, `
|
|
416
|
+
The mutating lifecycle commands — `setup`, `reset-db`, `update`, `test`, `down`, and `up --detach` — accept `--json` too. In JSON mode **stdout carries exactly one JSON object** (a single final line) and **everything else — decorative progress, streamed compose/Odoo subprocess output, the test tail — goes to stderr**, so a parser can always read the report with `tail -n 1 | jq` (no other line ever reaches stdout).
|
|
417
|
+
|
|
418
|
+
Every report shares this core:
|
|
419
|
+
|
|
420
|
+
```json
|
|
421
|
+
{ "ok": true, "command": "reset-db", "database": "kl_feature_x", "composeProjectName": "kl_kl_feature_x", "odooHttpPort": 18119, "durationMs": 4180, "actions": ["restore-from-template"] }
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
- `ok` — `true` on success; `false` on failure or (for `test`) a non-zero child exit.
|
|
425
|
+
- `composeProject` and `odooUrl` are kept as back-compat aliases of `composeProjectName` / the derived web URL.
|
|
426
|
+
- `actions` records what the command did, so tooling can tell which path ran.
|
|
427
|
+
|
|
428
|
+
Per-command extras merged into the core:
|
|
429
|
+
|
|
430
|
+
- **`setup` / `reset-db`** add `"mode": "template-restore" | "full-init"` and `"templateKey": "<recipe template hash>"`.
|
|
431
|
+
- **`test`** adds `"exitCode"`, `"stdoutTail"`, and `"stderrTail"` (the last 200 lines of the Odoo run); `ok` mirrors `exitCode === 0`.
|
|
432
|
+
- **`down`** adds `"volumesRemoved": boolean`.
|
|
433
|
+
|
|
434
|
+
On failure the command still renders the error on stderr and exits 1, **and** stdout gets a final `ok:false` object carrying the typed error, so a parser never sees an empty stdout:
|
|
413
435
|
|
|
414
436
|
```json
|
|
415
|
-
{ "ok":
|
|
437
|
+
{ "ok": false, "command": "reset-db", "database": "kl_e2e_demo", "composeProjectName": "kl_kl_e2e_demo", "odooHttpPort": 18119, "durationMs": 12, "actions": [], "error": { "tag": "SharedDatabaseProtectionError", "message": "refusing to touch shared database \"kl_e2e_demo\" (re-run reset-db with --allow-shared)" } }
|
|
416
438
|
```
|
|
417
439
|
|
|
418
|
-
`
|
|
440
|
+
`error.tag` is the underlying `TaggedError` `_tag`. Identity fields (`database`, `composeProjectName`, `odooHttpPort`) are `null` when the command fails before the context resolves.
|
|
441
|
+
|
|
442
|
+
Attached `up` (without `--detach`) streams forever and never reaches a final line, so **`up --json` requires `--detach`** — it is rejected up front with a `ConfigValidationError` pointing at `--detach`. `up --detach --json` works.
|
|
419
443
|
|
|
420
444
|
## State Registry
|
|
421
445
|
|
|
@@ -484,6 +508,25 @@ type PostInitHook =
|
|
|
484
508
|
|
|
485
509
|
Hook files resolve relative to the project root. Only `set-ir-config-parameter` commits automatically (it runs `env.cr.commit()` for you); `odoo-shell-file` and `odoo-shell-inline` scripts must call `env.cr.commit()` themselves or their changes are rolled back when the shell exits. Prefer `odoo-shell-file` and `set-ir-config-parameter`; inline code is harder to review.
|
|
486
510
|
|
|
511
|
+
## Ejecting
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
odoo-agentic-dev eject # all (Dockerfile + compose), prints the config patch
|
|
515
|
+
odoo-agentic-dev eject compose # just the compose file
|
|
516
|
+
odoo-agentic-dev eject dockerfile # just the Dockerfile (needs an odoo.build block)
|
|
517
|
+
odoo-agentic-dev eject --write-config # also rewrite the config in place
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
`eject` converts generated infra into project-owned files: it writes the Dockerfile (`Dockerfile.odoo`) and/or the compose file (`docker-compose.worktree.yml`) into the repo as plain, editable files and points the config at them via the existing `odoo.dockerfile` / `compose.file` escape hatches. There are no new runtime concepts — eject just automates stepping onto hatches the CLI already supports.
|
|
521
|
+
|
|
522
|
+
**When to eject:** you need custom services the generated compose does not model (extra containers, exotic networking), deliberate LAN exposure, or your team simply prefers infra it can see and edit in the repo.
|
|
523
|
+
|
|
524
|
+
**What you keep.** Everything that makes the CLI worth using still works against an ejected stack: database/port derivation, the full context env injection (`compose.file` consumers run with the same variables `info --env` prints, so the ejected compose's `${ODOO_DATABASE:?}` / `${ODOO_HTTP_PORT:?}` interpolations always resolve), the worktree lifecycle (`setup`/`up`/`down`/`reset-db`), and the safety guards (shared-database protection, loopback-only binding, unsafe-name rejection). The ejected files are **portable**: the compose render emits interpolations instead of the current worktree's baked literals, so one file serves every worktree.
|
|
525
|
+
|
|
526
|
+
**What you give up.** Config-driven infra upgrades. Once ejected, changes to `odoo.build` no longer regenerate your Dockerfile, and improvements to the generated compose file in future CLI releases no longer reach you — those files are yours to maintain.
|
|
527
|
+
|
|
528
|
+
By default eject prints a ready-to-apply config patch and changes nothing else; pass a path to override the destination (`--dockerfile-out` / `--compose-out`), `--force` to overwrite an existing file, and `--json` for a machine-readable `{ ok, written, configPatch, configWritten }` object. `--write-config` rewrites the config in place and discards comments, so it refuses a commented file without `--force`. `eject dockerfile` refuses a stock-image config — there is nothing to eject; add an `odoo.build` block first, or eject only the compose file.
|
|
529
|
+
|
|
487
530
|
## Development
|
|
488
531
|
|
|
489
532
|
```bash
|
package/dist/cli.js
CHANGED
|
@@ -22,6 +22,7 @@ import { psqlCommand } from "./commands/psql.js";
|
|
|
22
22
|
import { runCommand } from "./commands/run.js";
|
|
23
23
|
import { composeCommand } from "./commands/compose.js";
|
|
24
24
|
import { worktreeCommand } from "./commands/worktree.js";
|
|
25
|
+
import { ejectCommand } from "./commands/eject.js";
|
|
25
26
|
import { readFileSync } from "node:fs";
|
|
26
27
|
import { CommandRunnerLive } from "./platform/command-runner.js";
|
|
27
28
|
import { GitLive } from "./platform/git.js";
|
|
@@ -49,6 +50,7 @@ const root = Command.make("odoo-agentic-dev").pipe(Command.withDescription("Agen
|
|
|
49
50
|
runCommand,
|
|
50
51
|
composeCommand,
|
|
51
52
|
worktreeCommand,
|
|
53
|
+
ejectCommand,
|
|
52
54
|
]));
|
|
53
55
|
const services = Layer.mergeAll(GitLive, OdooLifecycleLive, ProcessSupervisorLive, StateStoreLive, PortProbeLive).pipe(Layer.provideMerge(DockerComposeLive), Layer.provideMerge(CommandRunnerLive), Layer.provideMerge(NodeServices.layer));
|
|
54
56
|
// ../package.json resolves from both dist/cli.js and src/cli.ts — single version source
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,8EAA8E;AAC9E,sEAAsE;AACtE,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAChD,OAAO,CAAC,eAAe,CAAC,+CAA+C,CAAC,EACxE,OAAO,CAAC,eAAe,CAAC;IACtB,WAAW;IACX,YAAY;IACZ,SAAS;IACT,WAAW;IACX,cAAc;IACd,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,WAAW;IACX,UAAU;IACV,cAAc;IACd,eAAe;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -205,5 +205,5 @@ export const doctorCommand = Command.make("doctor", {
|
|
|
205
205
|
if (hasHardFailure(checks)) {
|
|
206
206
|
process.exitCode = 1;
|
|
207
207
|
}
|
|
208
|
-
}));
|
|
208
|
+
})).pipe(Command.withDescription("environment health report; exits 1 on hard failures"));
|
|
209
209
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/down.js
CHANGED
|
@@ -41,6 +41,7 @@ export const downCommand = Command.make("down", {
|
|
|
41
41
|
yield* report.action("compose-down");
|
|
42
42
|
if (flags.volumes)
|
|
43
43
|
yield* report.action("remove-volumes");
|
|
44
|
+
yield* report.setExtra("volumesRemoved", flags.volumes);
|
|
44
45
|
yield* finalizeDownState(ctx, flags);
|
|
45
|
-
})));
|
|
46
|
+
}))).pipe(Command.withDescription("stop this worktree's stack (--volumes to also delete data)"));
|
|
46
47
|
//# sourceMappingURL=down.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Effect, Option } from "effect";
|
|
2
|
+
import { Command } from "effect/unstable/cli";
|
|
3
|
+
import { EjectError } from "../errors/errors.js";
|
|
4
|
+
import type { ConfigLoadError, ConfigValidationError } from "../errors/errors.js";
|
|
5
|
+
import type { OdooAgenticDevConfig, OdooAgenticDevConfigInput, OdooImageBuild } from "../core/project-recipe.js";
|
|
6
|
+
import type { WorktreeContext } from "../core/worktree-context.js";
|
|
7
|
+
export type EjectTarget = "all" | "dockerfile" | "compose";
|
|
8
|
+
export declare const DEFAULT_DOCKERFILE_OUT = "Dockerfile.odoo";
|
|
9
|
+
export declare const DEFAULT_COMPOSE_OUT = "docker-compose.worktree.yml";
|
|
10
|
+
/**
|
|
11
|
+
* The ejected Dockerfile is byte-identical to the generated one except for the
|
|
12
|
+
* first line: ownership now belongs to the project, so the "do not edit" notice
|
|
13
|
+
* is replaced by a provenance stamp carrying the CLI version it was cut from.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ejectedDockerfileHeader: (version: string) => string;
|
|
16
|
+
/** Render the ejected Dockerfile: the generated body with the header swapped. */
|
|
17
|
+
export declare const renderEjectedDockerfile: (odooVersion: string, cliVersion: string, build: OdooImageBuild) => string;
|
|
18
|
+
/** Regenerate a complete config file from a validated input object. */
|
|
19
|
+
export declare const serializeConfigFile: (input: OdooAgenticDevConfigInput) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Whether the source contains `//` or `/*` OUTSIDE string/template literals.
|
|
22
|
+
* URLs like "http://x" inside strings do not count as comments.
|
|
23
|
+
*/
|
|
24
|
+
export declare const hasComments: (source: string) => boolean;
|
|
25
|
+
export type EjectChanges = {
|
|
26
|
+
/** config-relative compose file path, when compose was ejected */
|
|
27
|
+
readonly composeFile?: string;
|
|
28
|
+
/** config-relative dockerfile path, when the dockerfile was ejected */
|
|
29
|
+
readonly dockerfileFile?: string;
|
|
30
|
+
};
|
|
31
|
+
/** Apply ejected-file references to a validated input object (immutably). */
|
|
32
|
+
export declare const applyEjectToInput: (input: OdooAgenticDevConfigInput, changes: EjectChanges) => OdooAgenticDevConfigInput;
|
|
33
|
+
/** Human-readable, ready-to-apply patch describing the exact config edits. */
|
|
34
|
+
export declare const buildConfigPatch: (changes: EjectChanges) => string;
|
|
35
|
+
export type EjectResult = {
|
|
36
|
+
readonly written: ReadonlyArray<string>;
|
|
37
|
+
readonly configPatch: string;
|
|
38
|
+
readonly configWritten: boolean;
|
|
39
|
+
/** human notes (e.g. stock image: compose-only eject) */
|
|
40
|
+
readonly notes: ReadonlyArray<string>;
|
|
41
|
+
};
|
|
42
|
+
export type PerformEjectOptions = {
|
|
43
|
+
readonly recipe: OdooAgenticDevConfig;
|
|
44
|
+
readonly ctx: WorktreeContext;
|
|
45
|
+
readonly rootDir: string;
|
|
46
|
+
readonly target: EjectTarget;
|
|
47
|
+
readonly dockerfileOut: string;
|
|
48
|
+
readonly composeOut: string;
|
|
49
|
+
readonly force: boolean;
|
|
50
|
+
readonly writeConfig: boolean;
|
|
51
|
+
readonly configFlag: string | undefined;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Convert generated infra into project-owned files: render the portable compose
|
|
55
|
+
* model and (optionally) the ejected Dockerfile, write them as plain files, and
|
|
56
|
+
* either leave a config patch or regenerate the config in place.
|
|
57
|
+
*/
|
|
58
|
+
export declare const performEject: (options: PerformEjectOptions) => Effect.Effect<EjectResult, EjectError | ConfigLoadError | ConfigValidationError>;
|
|
59
|
+
/** The success payload printed (as one line) to stdout in `--json` mode. */
|
|
60
|
+
export declare const renderEjectJson: (result: EjectResult) => string;
|
|
61
|
+
/** The failure payload printed (as one line) to stdout in `--json` mode. */
|
|
62
|
+
export declare const renderEjectErrorJson: (error: {
|
|
63
|
+
readonly _tag: string;
|
|
64
|
+
readonly message: string;
|
|
65
|
+
}) => string;
|
|
66
|
+
export declare const ejectCommand: Command.Command<"eject", {
|
|
67
|
+
readonly target: Option.Option<string>;
|
|
68
|
+
readonly dockerfileOut: Option.Option<string>;
|
|
69
|
+
readonly composeOut: Option.Option<string>;
|
|
70
|
+
readonly force: boolean;
|
|
71
|
+
readonly writeConfig: boolean;
|
|
72
|
+
readonly json: boolean;
|
|
73
|
+
readonly config: Option.Option<string>;
|
|
74
|
+
}, {}, import("../errors/errors.js").RuntimeError, import("../platform/git.js").GitApi>;
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
3
|
+
import { Console, Effect, Option } from "effect";
|
|
4
|
+
import { Argument, Command, Flag } from "effect/unstable/cli";
|
|
5
|
+
import { createJiti } from "jiti";
|
|
6
|
+
import { EjectError, isRuntimeError, renderError } from "../errors/errors.js";
|
|
7
|
+
import { buildComposeModel, renderComposeYaml } from "../core/compose-model.js";
|
|
8
|
+
import { renderDockerfile } from "../core/dockerfile-model.js";
|
|
9
|
+
import { discoverConfigPath, loadRecipe } from "../config/load-recipe.js";
|
|
10
|
+
import { validateConfigInput } from "../config/schema.js";
|
|
11
|
+
import { resolveContext } from "./resolve-context.js";
|
|
12
|
+
export const DEFAULT_DOCKERFILE_OUT = "Dockerfile.odoo";
|
|
13
|
+
export const DEFAULT_COMPOSE_OUT = "docker-compose.worktree.yml";
|
|
14
|
+
// the CLI version stamped into the ejected Dockerfile header (single source:
|
|
15
|
+
// package.json, resolved from both dist/ and src/ — mirrors cli.ts)
|
|
16
|
+
const CLI_VERSION = (() => {
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
|
|
19
|
+
return parsed.version;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return "0.0.0";
|
|
23
|
+
}
|
|
24
|
+
})();
|
|
25
|
+
/** A relative path for display/config (forward slashes, no leading "./"). */
|
|
26
|
+
const toRelative = (rootDir, target) => {
|
|
27
|
+
const abs = isAbsolute(target) ? target : resolve(rootDir, target);
|
|
28
|
+
const rel = relative(rootDir, abs);
|
|
29
|
+
return rel.length === 0 ? abs : rel.split("\\").join("/");
|
|
30
|
+
};
|
|
31
|
+
// --- pure renderers ---------------------------------------------------------
|
|
32
|
+
const GENERATED_DOCKERFILE_HEADER = "# Generated by odoo-agentic-dev from `odoo.build` in the project config — do not edit.";
|
|
33
|
+
/**
|
|
34
|
+
* The ejected Dockerfile is byte-identical to the generated one except for the
|
|
35
|
+
* first line: ownership now belongs to the project, so the "do not edit" notice
|
|
36
|
+
* is replaced by a provenance stamp carrying the CLI version it was cut from.
|
|
37
|
+
*/
|
|
38
|
+
export const ejectedDockerfileHeader = (version) => `# Ejected from odoo-agentic-dev v${version} — this file is yours now.`;
|
|
39
|
+
/** Render the ejected Dockerfile: the generated body with the header swapped. */
|
|
40
|
+
export const renderEjectedDockerfile = (odooVersion, cliVersion, build) => {
|
|
41
|
+
const generated = renderDockerfile(odooVersion, build);
|
|
42
|
+
return generated.startsWith(GENERATED_DOCKERFILE_HEADER)
|
|
43
|
+
? ejectedDockerfileHeader(cliVersion) + generated.slice(GENERATED_DOCKERFILE_HEADER.length)
|
|
44
|
+
: generated;
|
|
45
|
+
};
|
|
46
|
+
// --- config serialization ---------------------------------------------------
|
|
47
|
+
const IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
48
|
+
/** Deterministic JS-object literal: identifier keys unquoted, data only. */
|
|
49
|
+
const serializeValue = (value, indent) => {
|
|
50
|
+
if (value === null)
|
|
51
|
+
return "null";
|
|
52
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
53
|
+
return JSON.stringify(value);
|
|
54
|
+
}
|
|
55
|
+
const pad = " ".repeat(indent);
|
|
56
|
+
const childPad = " ".repeat(indent + 1);
|
|
57
|
+
if (Array.isArray(value)) {
|
|
58
|
+
if (value.length === 0)
|
|
59
|
+
return "[]";
|
|
60
|
+
const items = value.map((item) => `${childPad}${serializeValue(item, indent + 1)}`);
|
|
61
|
+
return `[\n${items.join(",\n")}\n${pad}]`;
|
|
62
|
+
}
|
|
63
|
+
if (typeof value === "object") {
|
|
64
|
+
const entries = Object.entries(value).filter(([, v]) => v !== undefined);
|
|
65
|
+
if (entries.length === 0)
|
|
66
|
+
return "{}";
|
|
67
|
+
const rendered = entries.map(([key, v]) => {
|
|
68
|
+
const renderedKey = IDENTIFIER.test(key) ? key : JSON.stringify(key);
|
|
69
|
+
return `${childPad}${renderedKey}: ${serializeValue(v, indent + 1)}`;
|
|
70
|
+
});
|
|
71
|
+
return `{\n${rendered.join(",\n")}\n${pad}}`;
|
|
72
|
+
}
|
|
73
|
+
return JSON.stringify(String(value));
|
|
74
|
+
};
|
|
75
|
+
/** Regenerate a complete config file from a validated input object. */
|
|
76
|
+
export const serializeConfigFile = (input) => `import { defineConfig } from "@basaltbytes/odoo-agentic-dev";\n\nexport default defineConfig(${serializeValue(input, 0)});\n`;
|
|
77
|
+
/**
|
|
78
|
+
* Whether the source contains `//` or `/*` OUTSIDE string/template literals.
|
|
79
|
+
* URLs like "http://x" inside strings do not count as comments.
|
|
80
|
+
*/
|
|
81
|
+
export const hasComments = (source) => {
|
|
82
|
+
let index = 0;
|
|
83
|
+
const length = source.length;
|
|
84
|
+
while (index < length) {
|
|
85
|
+
const char = source[index];
|
|
86
|
+
if (char === '"' || char === "'" || char === "`") {
|
|
87
|
+
const quote = char;
|
|
88
|
+
index += 1;
|
|
89
|
+
while (index < length && source[index] !== quote) {
|
|
90
|
+
if (source[index] === "\\")
|
|
91
|
+
index += 1;
|
|
92
|
+
index += 1;
|
|
93
|
+
}
|
|
94
|
+
index += 1;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (char === "/" && (source[index + 1] === "/" || source[index + 1] === "*")) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
index += 1;
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
};
|
|
104
|
+
/** Apply ejected-file references to a validated input object (immutably). */
|
|
105
|
+
export const applyEjectToInput = (input, changes) => {
|
|
106
|
+
const odoo = { ...input.odoo };
|
|
107
|
+
if (changes.dockerfileFile !== undefined) {
|
|
108
|
+
// dockerfile and build are mutually exclusive — replace the build block
|
|
109
|
+
delete odoo["build"];
|
|
110
|
+
odoo["dockerfile"] = changes.dockerfileFile;
|
|
111
|
+
}
|
|
112
|
+
const next = { ...input, odoo };
|
|
113
|
+
if (changes.composeFile !== undefined) {
|
|
114
|
+
next["compose"] = { ...input.compose, file: changes.composeFile };
|
|
115
|
+
}
|
|
116
|
+
return next;
|
|
117
|
+
};
|
|
118
|
+
/** Human-readable, ready-to-apply patch describing the exact config edits. */
|
|
119
|
+
export const buildConfigPatch = (changes) => {
|
|
120
|
+
const lines = ["Apply this patch to odoo-agentic-dev.config.ts:"];
|
|
121
|
+
if (changes.composeFile !== undefined) {
|
|
122
|
+
lines.push("", " add at the top level:", ` compose: { file: ${JSON.stringify(changes.composeFile)} },`);
|
|
123
|
+
}
|
|
124
|
+
if (changes.dockerfileFile !== undefined) {
|
|
125
|
+
lines.push("", " inside odoo, REPLACE the `build: { ... }` block with:", ` dockerfile: ${JSON.stringify(changes.dockerfileFile)},`);
|
|
126
|
+
}
|
|
127
|
+
return lines.join("\n");
|
|
128
|
+
};
|
|
129
|
+
const failEject = (reason) => Effect.fail(new EjectError({ reason }));
|
|
130
|
+
const tryWrite = (path, content) => Effect.try({
|
|
131
|
+
try: () => writeFileSync(path, content),
|
|
132
|
+
catch: (cause) => new EjectError({ reason: `could not write ${path}: ${String(cause)}` }),
|
|
133
|
+
});
|
|
134
|
+
// jiti for re-importing the config input during --write-config (the loader keeps
|
|
135
|
+
// its own jiti instance private; eject needs the raw input object back).
|
|
136
|
+
// moduleCache:false: we read the config, REWRITE it, and the loader re-imports
|
|
137
|
+
// the same path for round-trip proof — a shared module cache would hand the
|
|
138
|
+
// loader back the pre-rewrite module, so eject's jiti must never populate it.
|
|
139
|
+
const ejectJiti = createJiti(import.meta.url, {
|
|
140
|
+
interopDefault: true,
|
|
141
|
+
moduleCache: false,
|
|
142
|
+
alias: {
|
|
143
|
+
"@basaltbytes/odoo-agentic-dev": (() => {
|
|
144
|
+
for (const candidate of ["../index.js", "../index.ts"]) {
|
|
145
|
+
const path = new URL(candidate, import.meta.url);
|
|
146
|
+
if (existsSync(path))
|
|
147
|
+
return path.pathname;
|
|
148
|
+
}
|
|
149
|
+
return "@basaltbytes/odoo-agentic-dev";
|
|
150
|
+
})(),
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
const loadConfigInput = (path) => Effect.tryPromise({
|
|
154
|
+
try: () => ejectJiti.import(path, { default: true }),
|
|
155
|
+
catch: (cause) => new EjectError({ reason: `could not re-import config ${path}: ${String(cause)}` }),
|
|
156
|
+
}).pipe(Effect.flatMap(validateConfigInput));
|
|
157
|
+
/**
|
|
158
|
+
* Convert generated infra into project-owned files: render the portable compose
|
|
159
|
+
* model and (optionally) the ejected Dockerfile, write them as plain files, and
|
|
160
|
+
* either leave a config patch or regenerate the config in place.
|
|
161
|
+
*/
|
|
162
|
+
export const performEject = (options) => Effect.gen(function* () {
|
|
163
|
+
const { ctx, force, recipe, rootDir, target } = options;
|
|
164
|
+
const dockerfileAbs = isAbsolute(options.dockerfileOut)
|
|
165
|
+
? options.dockerfileOut
|
|
166
|
+
: resolve(rootDir, options.dockerfileOut);
|
|
167
|
+
const composeAbs = isAbsolute(options.composeOut)
|
|
168
|
+
? options.composeOut
|
|
169
|
+
: resolve(rootDir, options.composeOut);
|
|
170
|
+
const dockerfileRel = toRelative(rootDir, dockerfileAbs);
|
|
171
|
+
const composeRel = toRelative(rootDir, composeAbs);
|
|
172
|
+
const wantDockerfile = target === "all" || target === "dockerfile";
|
|
173
|
+
const wantCompose = target === "all" || target === "compose";
|
|
174
|
+
const notes = [];
|
|
175
|
+
// A stock image (no build, no hand-written dockerfile) has nothing to eject.
|
|
176
|
+
const canEjectDockerfile = recipe.odoo.build !== null;
|
|
177
|
+
if (target === "dockerfile") {
|
|
178
|
+
if (recipe.odoo.dockerfile !== null) {
|
|
179
|
+
return yield* failEject(`the Dockerfile is already ejected / hand-written at ${recipe.odoo.dockerfile} (odoo.dockerfile); nothing to do`);
|
|
180
|
+
}
|
|
181
|
+
if (!canEjectDockerfile) {
|
|
182
|
+
return yield* failEject("there is no Dockerfile to eject: the config uses the stock odoo image. Add an `odoo.build` block first, or eject only the compose file.");
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (target === "all" && recipe.odoo.dockerfile !== null) {
|
|
186
|
+
notes.push(`odoo.dockerfile is already set (${recipe.odoo.dockerfile}); ejecting the compose file only.`);
|
|
187
|
+
}
|
|
188
|
+
if (target === "all" && !canEjectDockerfile && recipe.odoo.dockerfile === null) {
|
|
189
|
+
notes.push("no odoo.build/dockerfile in the config (stock image); ejecting the compose file only.");
|
|
190
|
+
}
|
|
191
|
+
const ejectDockerfileNow = wantDockerfile && canEjectDockerfile && recipe.odoo.dockerfile === null;
|
|
192
|
+
// Collision check across every file we will write (before writing any).
|
|
193
|
+
const planned = [];
|
|
194
|
+
if (ejectDockerfileNow)
|
|
195
|
+
planned.push(dockerfileAbs);
|
|
196
|
+
if (wantCompose)
|
|
197
|
+
planned.push(composeAbs);
|
|
198
|
+
const conflicts = planned.filter((path) => existsSync(path));
|
|
199
|
+
if (conflicts.length > 0 && !force) {
|
|
200
|
+
return yield* failEject(`refusing to overwrite existing file(s) without --force: ${conflicts
|
|
201
|
+
.map((path) => toRelative(rootDir, path))
|
|
202
|
+
.join(", ")}`);
|
|
203
|
+
}
|
|
204
|
+
const written = [];
|
|
205
|
+
const changes = {};
|
|
206
|
+
if (ejectDockerfileNow) {
|
|
207
|
+
const dockerfile = renderEjectedDockerfile(recipe.odoo.version, CLI_VERSION, recipe.odoo.build);
|
|
208
|
+
yield* tryWrite(dockerfileAbs, dockerfile);
|
|
209
|
+
written.push(dockerfileRel);
|
|
210
|
+
changes.dockerfileFile = dockerfileRel;
|
|
211
|
+
}
|
|
212
|
+
if (wantCompose) {
|
|
213
|
+
// point build.dockerfile at the ejected file when both are ejected,
|
|
214
|
+
// else let the model fall back to the existing config value.
|
|
215
|
+
const model = buildComposeModel(recipe, ctx, {
|
|
216
|
+
portable: true,
|
|
217
|
+
...(ejectDockerfileNow ? { dockerfilePath: dockerfileRel } : {}),
|
|
218
|
+
});
|
|
219
|
+
yield* tryWrite(composeAbs, renderComposeYaml(model));
|
|
220
|
+
written.push(composeRel);
|
|
221
|
+
changes.composeFile = composeRel;
|
|
222
|
+
}
|
|
223
|
+
const configPatch = buildConfigPatch(changes);
|
|
224
|
+
let configWritten = false;
|
|
225
|
+
if (options.writeConfig) {
|
|
226
|
+
const path = yield* options.configFlag !== undefined
|
|
227
|
+
? Effect.succeed(isAbsolute(options.configFlag)
|
|
228
|
+
? options.configFlag
|
|
229
|
+
: resolve(rootDir, options.configFlag))
|
|
230
|
+
: discoverConfigPath(rootDir).pipe(Effect.flatMap((found) => found === undefined
|
|
231
|
+
? failEject("could not find a config file to rewrite with --write-config; pass --config")
|
|
232
|
+
: Effect.succeed(found)));
|
|
233
|
+
const source = yield* Effect.try({
|
|
234
|
+
try: () => readFileSync(path, "utf8"),
|
|
235
|
+
catch: (cause) => new EjectError({ reason: `could not read config ${path}: ${String(cause)}` }),
|
|
236
|
+
});
|
|
237
|
+
if (hasComments(source) && !force) {
|
|
238
|
+
return yield* failEject(`--write-config would discard comments in ${toRelative(rootDir, path)}; re-run with --force to overwrite, or apply the printed patch by hand`);
|
|
239
|
+
}
|
|
240
|
+
const input = yield* loadConfigInput(path);
|
|
241
|
+
const nextInput = applyEjectToInput(input, changes);
|
|
242
|
+
yield* tryWrite(path, serializeConfigFile(nextInput));
|
|
243
|
+
// prove the regenerated file re-loads, re-validates, and re-normalizes
|
|
244
|
+
yield* loadRecipe({ cwd: rootDir, explicitPath: path, env: process.env }).pipe(Effect.mapError((error) => new EjectError({
|
|
245
|
+
reason: `the regenerated config did not round-trip: ${isRuntimeError(error) ? renderError(error) : String(error)}`,
|
|
246
|
+
})));
|
|
247
|
+
configWritten = true;
|
|
248
|
+
}
|
|
249
|
+
return { written, configPatch, configWritten, notes };
|
|
250
|
+
});
|
|
251
|
+
// --- command ----------------------------------------------------------------
|
|
252
|
+
/** The success payload printed (as one line) to stdout in `--json` mode. */
|
|
253
|
+
export const renderEjectJson = (result) => JSON.stringify({
|
|
254
|
+
ok: true,
|
|
255
|
+
command: "eject",
|
|
256
|
+
written: result.written,
|
|
257
|
+
configPatch: result.configPatch,
|
|
258
|
+
configWritten: result.configWritten,
|
|
259
|
+
});
|
|
260
|
+
/** The failure payload printed (as one line) to stdout in `--json` mode. */
|
|
261
|
+
export const renderEjectErrorJson = (error) => JSON.stringify({
|
|
262
|
+
ok: false,
|
|
263
|
+
command: "eject",
|
|
264
|
+
error: { tag: error._tag, message: error.message },
|
|
265
|
+
});
|
|
266
|
+
const parseTarget = (raw) => raw === undefined || raw === "all"
|
|
267
|
+
? Effect.succeed("all")
|
|
268
|
+
: raw === "dockerfile" || raw === "compose"
|
|
269
|
+
? Effect.succeed(raw)
|
|
270
|
+
: failEject(`unknown eject target "${raw}" (expected: all, dockerfile, or compose)`);
|
|
271
|
+
export const ejectCommand = Command.make("eject", {
|
|
272
|
+
target: Argument.string("target").pipe(Argument.optional, Argument.withDescription("all (default), dockerfile, or compose")),
|
|
273
|
+
dockerfileOut: Flag.string("dockerfile-out").pipe(Flag.optional, Flag.withDescription(`ejected Dockerfile path (default ${DEFAULT_DOCKERFILE_OUT})`)),
|
|
274
|
+
composeOut: Flag.string("compose-out").pipe(Flag.optional, Flag.withDescription(`ejected compose path (default ${DEFAULT_COMPOSE_OUT})`)),
|
|
275
|
+
force: Flag.boolean("force").pipe(Flag.withDescription("overwrite existing files / commented config")),
|
|
276
|
+
writeConfig: Flag.boolean("write-config").pipe(Flag.withDescription("rewrite the config in place (comments are lost)")),
|
|
277
|
+
json: Flag.boolean("json").pipe(Flag.withDescription("print machine-readable JSON")),
|
|
278
|
+
config: Flag.string("config").pipe(Flag.optional, Flag.withDescription("explicit config file path")),
|
|
279
|
+
}, (flags) => Effect.gen(function* () {
|
|
280
|
+
const json = flags.json;
|
|
281
|
+
const program = Effect.gen(function* () {
|
|
282
|
+
const target = yield* parseTarget(Option.getOrUndefined(flags.target));
|
|
283
|
+
const { ctx, recipe } = yield* resolveContext(flags.config);
|
|
284
|
+
const result = yield* performEject({
|
|
285
|
+
recipe,
|
|
286
|
+
ctx,
|
|
287
|
+
rootDir: ctx.rootDir,
|
|
288
|
+
target,
|
|
289
|
+
dockerfileOut: Option.getOrUndefined(flags.dockerfileOut) ?? DEFAULT_DOCKERFILE_OUT,
|
|
290
|
+
composeOut: Option.getOrUndefined(flags.composeOut) ?? DEFAULT_COMPOSE_OUT,
|
|
291
|
+
force: flags.force,
|
|
292
|
+
writeConfig: flags.writeConfig,
|
|
293
|
+
configFlag: Option.getOrUndefined(flags.config),
|
|
294
|
+
});
|
|
295
|
+
if (json) {
|
|
296
|
+
// human output to stderr; stdout is exactly one JSON object
|
|
297
|
+
for (const note of result.notes)
|
|
298
|
+
yield* Console.error(note);
|
|
299
|
+
for (const path of result.written)
|
|
300
|
+
yield* Console.error(`wrote ${path}`);
|
|
301
|
+
yield* Console.error(result.configWritten
|
|
302
|
+
? "rewrote the config in place (comments, if any, were lost)"
|
|
303
|
+
: result.configPatch);
|
|
304
|
+
yield* Effect.sync(() => process.stdout.write(`${renderEjectJson(result)}\n`));
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
for (const note of result.notes)
|
|
308
|
+
yield* Console.log(note);
|
|
309
|
+
for (const path of result.written)
|
|
310
|
+
yield* Console.log(`wrote ${path}`);
|
|
311
|
+
if (result.configWritten) {
|
|
312
|
+
yield* Console.log("rewrote the config in place (comments, if any, were lost).");
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
yield* Console.log("");
|
|
316
|
+
yield* Console.log(result.configPatch);
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
// in JSON mode, typed failures still emit one JSON object on stdout
|
|
320
|
+
return yield* json
|
|
321
|
+
? program.pipe(Effect.catch((error) => Effect.gen(function* () {
|
|
322
|
+
if (isRuntimeError(error))
|
|
323
|
+
yield* Console.error(renderError(error));
|
|
324
|
+
yield* Effect.sync(() => process.stdout.write(`${renderEjectErrorJson(error)}\n`));
|
|
325
|
+
yield* Effect.sync(() => {
|
|
326
|
+
process.exitCode = 1;
|
|
327
|
+
});
|
|
328
|
+
})))
|
|
329
|
+
: program;
|
|
330
|
+
})).pipe(Command.withDescription("write the Dockerfile/compose file into the repo and own them"));
|
|
331
|
+
//# sourceMappingURL=eject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eject.js","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"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"}
|