@basaltbytes/odoo-agentic-dev 0.1.0-beta.1 → 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 +153 -73
- package/dist/cli.js +6 -1
- 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/config/schema.js +41 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/command-plan.d.ts +10 -5
- package/dist/core/command-plan.js +13 -4
- package/dist/core/command-plan.js.map +1 -1
- package/dist/core/compose-model.d.ts +20 -2
- package/dist/core/compose-model.js +59 -13
- package/dist/core/compose-model.js.map +1 -1
- package/dist/core/dockerfile-model.d.ts +8 -0
- package/dist/core/dockerfile-model.js +34 -0
- package/dist/core/dockerfile-model.js.map +1 -0
- package/dist/core/project-recipe.d.ts +37 -0
- package/dist/core/project-recipe.js +2 -0
- package/dist/core/project-recipe.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/dist/index.d.ts +1 -1
- package/dist/platform/docker-compose.js +4 -0
- package/dist/platform/docker-compose.js.map +1 -1
- package/dist/platform/odoo-lifecycle.js +5 -5
- package/dist/platform/odoo-lifecycle.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
package/dist/commands/info.js
CHANGED
|
@@ -38,5 +38,5 @@ export const infoCommand = Command.make("info", {
|
|
|
38
38
|
? buildInfoEnv(ctx)
|
|
39
39
|
: buildInfoText(ctx);
|
|
40
40
|
yield* Console.log(output);
|
|
41
|
-
}));
|
|
41
|
+
})).pipe(Command.withDescription("print the derived context: database, ports, URLs, env"));
|
|
42
42
|
//# sourceMappingURL=info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,18 +6,38 @@ import type { WorktreeContext } from "../core/worktree-context.js";
|
|
|
6
6
|
* asserts these exact strings, so they are part of the CLI's contract.
|
|
7
7
|
*/
|
|
8
8
|
export declare const resetPathActions: (path: ResetPath) => ReadonlyArray<string>;
|
|
9
|
-
/**
|
|
9
|
+
/** Coarse mode classification of a reset path for the JSON report. */
|
|
10
|
+
export declare const resetPathMode: (path: ResetPath) => "template-restore" | "full-init";
|
|
11
|
+
/** The typed-error summary emitted under `--json` when a command fails. */
|
|
12
|
+
export type JsonErrorReport = {
|
|
13
|
+
/** the TaggedError `_tag` (e.g. "SharedDatabaseProtectionError") */
|
|
14
|
+
readonly tag: string;
|
|
15
|
+
readonly message: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Per-command extra fields merged into the final report. Typed loosely on
|
|
19
|
+
* purpose: every value is JSON-serialisable and the per-command set is small
|
|
20
|
+
* (see each command's `setExtra` calls).
|
|
21
|
+
*/
|
|
22
|
+
export type JsonReportExtras = Record<string, string | number | boolean | null>;
|
|
23
|
+
/** The fixed core of the object a lifecycle command prints under `--json`. */
|
|
10
24
|
export type JsonReport = {
|
|
11
25
|
readonly ok: boolean;
|
|
12
26
|
readonly command: string;
|
|
13
27
|
/** null when the command failed before the context resolved */
|
|
14
28
|
readonly database: string | null;
|
|
29
|
+
/** plan name; `composeProject` is kept as a back-compat alias */
|
|
30
|
+
readonly composeProjectName: string | null;
|
|
31
|
+
/** legacy alias of `composeProjectName` (frozen e2e/nightly contract) */
|
|
15
32
|
readonly composeProject: string | null;
|
|
33
|
+
readonly odooHttpPort: number | null;
|
|
16
34
|
readonly odooUrl: string | null;
|
|
17
35
|
readonly actions: ReadonlyArray<string>;
|
|
18
36
|
readonly durationMs: number;
|
|
19
37
|
/** child exit code, when the command ran one to completion (`test`) */
|
|
20
38
|
readonly exitCode?: number;
|
|
39
|
+
/** present only on failure */
|
|
40
|
+
readonly error?: JsonErrorReport;
|
|
21
41
|
};
|
|
22
42
|
/**
|
|
23
43
|
* Per-invocation reporter threaded through a lifecycle command. In text mode
|
|
@@ -34,12 +54,25 @@ export interface CommandReporter {
|
|
|
34
54
|
readonly setContext: (ctx: WorktreeContext) => Effect.Effect<void>;
|
|
35
55
|
/** child exit code; a non-zero code makes the final report not-ok */
|
|
36
56
|
readonly setExitCode: (code: number) => Effect.Effect<void>;
|
|
57
|
+
/** attach a per-command field (mode, templateKey, volumesRemoved, tails…) */
|
|
58
|
+
readonly setExtra: (key: string, value: string | number | boolean | null) => Effect.Effect<void>;
|
|
37
59
|
}
|
|
38
60
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
61
|
+
* Hook-mode stdout purity (the `exec 1>&2` trick): everything written to
|
|
62
|
+
* process.stdout while the effect runs — Console.log, streamed child output —
|
|
63
|
+
* lands on stderr instead; the original writer is restored afterwards so the
|
|
64
|
+
* caller can print the single contractual stdout line. Reused by `withJsonReport`
|
|
65
|
+
* and by `worktree create --hook-json`.
|
|
66
|
+
*/
|
|
67
|
+
export declare const withStdoutRedirectedToStderr: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
68
|
+
/**
|
|
69
|
+
* Wrap a lifecycle command body with the `--json` reporting contract:
|
|
70
|
+
*
|
|
71
|
+
* - in json mode, redirect everything the body writes to stdout — Console.log,
|
|
72
|
+
* streamed compose/odoo subprocess output — onto stderr, so stdout carries
|
|
73
|
+
* EXACTLY ONE JSON object (the final line);
|
|
74
|
+
* - collect actions/extras while the body runs, then print that single JSON
|
|
75
|
+
* line to the real stdout — on success and on typed failure alike (the error
|
|
76
|
+
* still propagates, so it renders on stderr and drives the exit code).
|
|
44
77
|
*/
|
|
45
78
|
export declare const withJsonReport: <A, E, R>(command: string, json: boolean, body: (report: CommandReporter) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Console, Effect } from "effect";
|
|
2
|
+
import { isRuntimeError } from "../errors/errors.js";
|
|
2
3
|
/**
|
|
3
4
|
* Semantic action names for the reset paths. The nightly real-Odoo workflow
|
|
4
5
|
* asserts these exact strings, so they are part of the CLI's contract.
|
|
@@ -8,16 +9,50 @@ export const resetPathActions = (path) => path === "restore"
|
|
|
8
9
|
: path === "full"
|
|
9
10
|
? ["full-init"]
|
|
10
11
|
: ["full-init", "snapshot-template"];
|
|
12
|
+
/** Coarse mode classification of a reset path for the JSON report. */
|
|
13
|
+
export const resetPathMode = (path) => path === "restore" ? "template-restore" : "full-init";
|
|
11
14
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* Hook-mode stdout purity (the `exec 1>&2` trick): everything written to
|
|
16
|
+
* process.stdout while the effect runs — Console.log, streamed child output —
|
|
17
|
+
* lands on stderr instead; the original writer is restored afterwards so the
|
|
18
|
+
* caller can print the single contractual stdout line. Reused by `withJsonReport`
|
|
19
|
+
* and by `worktree create --hook-json`.
|
|
20
|
+
*/
|
|
21
|
+
export const withStdoutRedirectedToStderr = (effect) => Effect.suspend(() => {
|
|
22
|
+
const original = process.stdout.write;
|
|
23
|
+
process.stdout.write = ((...args) => process.stderr.write(...args));
|
|
24
|
+
return effect.pipe(Effect.ensuring(Effect.sync(() => {
|
|
25
|
+
process.stdout.write = original;
|
|
26
|
+
})));
|
|
27
|
+
});
|
|
28
|
+
/** Best-effort tag/message extraction from an unknown failure value. */
|
|
29
|
+
const toErrorReport = (error) => {
|
|
30
|
+
if (isRuntimeError(error)) {
|
|
31
|
+
return { tag: error._tag, message: error.message };
|
|
32
|
+
}
|
|
33
|
+
if (typeof error === "object" && error !== null && "_tag" in error) {
|
|
34
|
+
const tag = String(error._tag);
|
|
35
|
+
const message = "message" in error && typeof error.message === "string"
|
|
36
|
+
? error.message
|
|
37
|
+
: String(error);
|
|
38
|
+
return { tag, message };
|
|
39
|
+
}
|
|
40
|
+
return { tag: "UnknownError", message: String(error) };
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Wrap a lifecycle command body with the `--json` reporting contract:
|
|
44
|
+
*
|
|
45
|
+
* - in json mode, redirect everything the body writes to stdout — Console.log,
|
|
46
|
+
* streamed compose/odoo subprocess output — onto stderr, so stdout carries
|
|
47
|
+
* EXACTLY ONE JSON object (the final line);
|
|
48
|
+
* - collect actions/extras while the body runs, then print that single JSON
|
|
49
|
+
* line to the real stdout — on success and on typed failure alike (the error
|
|
50
|
+
* still propagates, so it renders on stderr and drives the exit code).
|
|
17
51
|
*/
|
|
18
52
|
export const withJsonReport = (command, json, body) => Effect.gen(function* () {
|
|
19
53
|
const startedAt = Date.now();
|
|
20
54
|
const actions = [];
|
|
55
|
+
const extras = {};
|
|
21
56
|
let ctx = null;
|
|
22
57
|
let exitCode;
|
|
23
58
|
const record = (entry) => Effect.sync(() => {
|
|
@@ -33,23 +68,34 @@ export const withJsonReport = (command, json, body) => Effect.gen(function* () {
|
|
|
33
68
|
setExitCode: (code) => Effect.sync(() => {
|
|
34
69
|
exitCode = code;
|
|
35
70
|
}),
|
|
71
|
+
setExtra: (key, value) => Effect.sync(() => {
|
|
72
|
+
extras[key] = value;
|
|
73
|
+
}),
|
|
36
74
|
};
|
|
37
|
-
|
|
75
|
+
// the single contractual stdout line. In json mode the body ran with stdout
|
|
76
|
+
// redirected to stderr, but `original` was captured and restored by then, so
|
|
77
|
+
// this Console.log lands on the real stdout — alone.
|
|
78
|
+
const emit = (succeeded, error) => {
|
|
38
79
|
if (!json)
|
|
39
80
|
return Effect.void;
|
|
40
81
|
const resolved = ctx;
|
|
41
|
-
const
|
|
82
|
+
const core = {
|
|
42
83
|
ok: succeeded && (exitCode ?? 0) === 0,
|
|
43
84
|
command,
|
|
44
85
|
database: resolved === null ? null : resolved.databaseName,
|
|
86
|
+
composeProjectName: resolved === null ? null : resolved.composeProjectName,
|
|
45
87
|
composeProject: resolved === null ? null : resolved.composeProjectName,
|
|
88
|
+
odooHttpPort: resolved === null ? null : resolved.odooHttpPort,
|
|
46
89
|
odooUrl: resolved === null ? null : `${resolved.odooBaseUrl}/web?db=${resolved.databaseName}`,
|
|
47
90
|
actions,
|
|
48
91
|
durationMs: Date.now() - startedAt,
|
|
49
92
|
...(exitCode === undefined ? {} : { exitCode }),
|
|
93
|
+
...(succeeded ? {} : { error: toErrorReport(error) }),
|
|
50
94
|
};
|
|
51
|
-
|
|
95
|
+
// extras are merged AFTER the core so a command never clobbers a fixed key
|
|
96
|
+
return Console.log(JSON.stringify({ ...core, ...extras }));
|
|
52
97
|
};
|
|
53
|
-
|
|
98
|
+
const run = json ? withStdoutRedirectedToStderr(body(reporter)) : body(reporter);
|
|
99
|
+
return yield* run.pipe(Effect.tap(() => emit(true, undefined)), Effect.tapError((error) => emit(false, error)));
|
|
54
100
|
});
|
|
55
101
|
//# sourceMappingURL=json-report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-report.js","sourceRoot":"","sources":["../../src/commands/json-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"json-report.js","sourceRoot":"","sources":["../../src/commands/json-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,5 +112,5 @@ export const linkSourceCommand = Command.make("link-source", {
|
|
|
112
112
|
recipeSource: recipe.odoo.source,
|
|
113
113
|
});
|
|
114
114
|
yield* Console.log(`Linked ${linkPath} -> resolved Odoo source`);
|
|
115
|
-
}));
|
|
115
|
+
})).pipe(Command.withDescription("symlink a local Odoo checkout for editor navigation"));
|
|
116
116
|
//# sourceMappingURL=link-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-source.js","sourceRoot":"","sources":["../../src/commands/link-source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link-source.js","sourceRoot":"","sources":["../../src/commands/link-source.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.js
CHANGED
|
@@ -113,5 +113,5 @@ export const listCommand = Command.make("list", {
|
|
|
113
113
|
else {
|
|
114
114
|
yield* Console.log(buildListTable(entries, new Date().toISOString()));
|
|
115
115
|
}
|
|
116
|
-
}));
|
|
116
|
+
})).pipe(Command.withDescription("list registered environments and their Docker status"));
|
|
117
117
|
//# sourceMappingURL=list.js.map
|