hatchkit 0.1.16 → 0.1.18
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/dist/adopt.d.ts +1 -0
- package/dist/adopt.d.ts.map +1 -1
- package/dist/adopt.js +379 -169
- package/dist/adopt.js.map +1 -1
- package/dist/deploy/coolify-app.d.ts +16 -0
- package/dist/deploy/coolify-app.d.ts.map +1 -1
- package/dist/deploy/coolify-app.js +34 -16
- package/dist/deploy/coolify-app.js.map +1 -1
- package/dist/deploy/rollback.d.ts +5 -0
- package/dist/deploy/rollback.d.ts.map +1 -1
- package/dist/deploy/rollback.js +95 -2
- package/dist/deploy/rollback.js.map +1 -1
- package/dist/index.js +35 -9
- package/dist/index.js.map +1 -1
- package/dist/provision/index.d.ts +20 -0
- package/dist/provision/index.d.ts.map +1 -1
- package/dist/provision/index.js +6 -0
- package/dist/provision/index.js.map +1 -1
- package/dist/scaffold/build-pipeline.d.ts +33 -1
- package/dist/scaffold/build-pipeline.d.ts.map +1 -1
- package/dist/scaffold/build-pipeline.js +61 -10
- package/dist/scaffold/build-pipeline.js.map +1 -1
- package/dist/templates/build-pipeline/Dockerfile.client.hbs +1 -1
- package/dist/templates/build-pipeline/Dockerfile.server.hbs +1 -1
- package/dist/utils/cloudflare-api.d.ts +3 -0
- package/dist/utils/cloudflare-api.d.ts.map +1 -1
- package/dist/utils/cloudflare-api.js +14 -0
- package/dist/utils/cloudflare-api.js.map +1 -1
- package/dist/utils/run-ledger.d.ts +47 -1
- package/dist/utils/run-ledger.d.ts.map +1 -1
- package/dist/utils/run-ledger.js +15 -0
- package/dist/utils/run-ledger.js.map +1 -1
- package/package.json +1 -1
|
@@ -24,6 +24,42 @@
|
|
|
24
24
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
25
25
|
import { dirname, join } from "node:path";
|
|
26
26
|
import { renderTemplate } from "../utils/template.js";
|
|
27
|
+
/** Default Node major used when the project doesn't pin one via
|
|
28
|
+
* `engines.node`. Bumped to 24 (LTS since Oct 2025) to match what
|
|
29
|
+
* GitHub Actions defaults to and what most modern dependencies
|
|
30
|
+
* require — staying on 22 was producing `ERR_PNPM_UNSUPPORTED_ENGINE`
|
|
31
|
+
* for projects that had quietly added `>=24` to engines.node. */
|
|
32
|
+
const DEFAULT_NODE_MAJOR = "24";
|
|
33
|
+
/** Pull the minimum major Node version out of `package.json#engines.node`.
|
|
34
|
+
* Handles the common range syntaxes — `>=24`, `^24.0.0`, `24.x`, `22 || 24`,
|
|
35
|
+
* `>=20.0.0 <24.0.0` — by grabbing the first integer that appears.
|
|
36
|
+
* That's the lower bound of the range, which is what we want for the
|
|
37
|
+
* Docker base image (running on the floor of the supported range avoids
|
|
38
|
+
* surprising "this works on my machine but not in CI" version drift).
|
|
39
|
+
* Falls back to DEFAULT_NODE_MAJOR when the field is missing or yields
|
|
40
|
+
* a sub-18 number (probably a parse glitch — Node 18 is the oldest
|
|
41
|
+
* realistic floor as of 2026). */
|
|
42
|
+
export function detectNodeMajorVersion(projectDir) {
|
|
43
|
+
const pkgPath = join(projectDir, "package.json");
|
|
44
|
+
if (!existsSync(pkgPath))
|
|
45
|
+
return DEFAULT_NODE_MAJOR;
|
|
46
|
+
try {
|
|
47
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
48
|
+
const range = pkg.engines?.node;
|
|
49
|
+
if (!range)
|
|
50
|
+
return DEFAULT_NODE_MAJOR;
|
|
51
|
+
const m = range.match(/(\d+)/);
|
|
52
|
+
if (!m)
|
|
53
|
+
return DEFAULT_NODE_MAJOR;
|
|
54
|
+
const major = Number(m[1]);
|
|
55
|
+
if (!Number.isFinite(major) || major < 18)
|
|
56
|
+
return DEFAULT_NODE_MAJOR;
|
|
57
|
+
return String(major);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return DEFAULT_NODE_MAJOR;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
27
63
|
/** Compose file lookups mirror what Docker Compose itself supports —
|
|
28
64
|
* https://docs.docker.com/compose/compose-application-model/#the-compose-file
|
|
29
65
|
* We respect any of these instead of forcing one shape. */
|
|
@@ -56,9 +92,26 @@ export function detectBuildPipeline(projectDir) {
|
|
|
56
92
|
export function scaffoldBuildPipeline(input) {
|
|
57
93
|
const state = detectBuildPipeline(input.projectDir);
|
|
58
94
|
const written = [];
|
|
95
|
+
const created = [];
|
|
96
|
+
const overwritten = [];
|
|
59
97
|
const skipped = [];
|
|
98
|
+
// Helper: write a file and bucket it as created/overwritten based on
|
|
99
|
+
// whether it existed before this call. Adopt's ledger only records
|
|
100
|
+
// `created` entries — see ScaffoldBuildPipelineResult docs.
|
|
101
|
+
const write = (relPath, content, existedBefore) => {
|
|
102
|
+
writeProjectFile(input.projectDir, relPath, content);
|
|
103
|
+
written.push(relPath);
|
|
104
|
+
if (existedBefore)
|
|
105
|
+
overwritten.push(relPath);
|
|
106
|
+
else
|
|
107
|
+
created.push(relPath);
|
|
108
|
+
};
|
|
60
109
|
// Dockerfile.
|
|
61
|
-
|
|
110
|
+
// Node version: caller can override (e.g. tests); otherwise we
|
|
111
|
+
// sniff `engines.node` from the project's package.json so the
|
|
112
|
+
// image matches what the user's dependencies actually require.
|
|
113
|
+
const nodeMajor = input.nodeMajor ?? detectNodeMajorVersion(input.projectDir);
|
|
114
|
+
if (input.force || !state.hasDockerfile) {
|
|
62
115
|
const tpl = input.surfaces === "client-only"
|
|
63
116
|
? "build-pipeline/Dockerfile.client.hbs"
|
|
64
117
|
: "build-pipeline/Dockerfile.server.hbs";
|
|
@@ -66,9 +119,9 @@ export function scaffoldBuildPipeline(input) {
|
|
|
66
119
|
name: input.projectName,
|
|
67
120
|
port: input.port,
|
|
68
121
|
entrypoint: input.entrypoint,
|
|
122
|
+
nodeMajor,
|
|
69
123
|
});
|
|
70
|
-
|
|
71
|
-
written.push("Dockerfile");
|
|
124
|
+
write("Dockerfile", out, state.hasDockerfile);
|
|
72
125
|
}
|
|
73
126
|
else {
|
|
74
127
|
skipped.push("Dockerfile");
|
|
@@ -76,33 +129,31 @@ export function scaffoldBuildPipeline(input) {
|
|
|
76
129
|
// docker-compose.yml — only scaffold when no compose file (any of
|
|
77
130
|
// the recognised names) is present. Always write to
|
|
78
131
|
// `docker-compose.yml` since that's what Coolify expects by default.
|
|
79
|
-
if (!state.hasCompose) {
|
|
132
|
+
if (input.force || !state.hasCompose) {
|
|
80
133
|
const out = renderTemplate("build-pipeline/docker-compose.yml.hbs", {
|
|
81
134
|
name: input.projectName,
|
|
82
135
|
owner: input.ghOwner,
|
|
83
136
|
port: input.port,
|
|
84
137
|
});
|
|
85
|
-
|
|
86
|
-
written.push("docker-compose.yml");
|
|
138
|
+
write("docker-compose.yml", out, state.hasCompose);
|
|
87
139
|
}
|
|
88
140
|
else {
|
|
89
141
|
skipped.push(state.composePath?.replace(`${input.projectDir}/`, "") ?? "compose file");
|
|
90
142
|
}
|
|
91
143
|
// GitHub Actions deploy workflow.
|
|
92
|
-
if (!state.hasDeployWorkflow) {
|
|
144
|
+
if (input.force || !state.hasDeployWorkflow) {
|
|
93
145
|
// The deploy template uses GitHub Actions' own `${{ … }}` syntax,
|
|
94
146
|
// which clashes with Handlebars. We render it as a plain text
|
|
95
147
|
// file with `__VAR__` placeholders that get substituted here
|
|
96
148
|
// instead — no Handlebars on this one.
|
|
97
149
|
const raw = readTemplateRaw("build-pipeline/deploy.yml.hbs");
|
|
98
150
|
const filled = raw.replace(/__DEFAULT_BRANCH__/g, input.defaultBranch);
|
|
99
|
-
|
|
100
|
-
written.push(DEPLOY_WORKFLOW_PATH);
|
|
151
|
+
write(DEPLOY_WORKFLOW_PATH, filled, state.hasDeployWorkflow);
|
|
101
152
|
}
|
|
102
153
|
else {
|
|
103
154
|
skipped.push(DEPLOY_WORKFLOW_PATH);
|
|
104
155
|
}
|
|
105
|
-
return { written, skipped };
|
|
156
|
+
return { written, created, overwritten, skipped };
|
|
106
157
|
}
|
|
107
158
|
function writeProjectFile(projectDir, relPath, content) {
|
|
108
159
|
const full = join(projectDir, relPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-pipeline.js","sourceRoot":"","sources":["../../src/scaffold/build-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"build-pipeline.js","sourceRoot":"","sources":["../../src/scaffold/build-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Coolify via docker-compose.yml. nginx serves the built bundle —
|
|
6
6
|
# no runtime Node, so dotenvx encryption isn't relevant here
|
|
7
7
|
# (anything sensitive should never reach the browser bundle anyway).
|
|
8
|
-
ARG NODE_VERSION=
|
|
8
|
+
ARG NODE_VERSION={{nodeMajor}}
|
|
9
9
|
|
|
10
10
|
FROM node:${NODE_VERSION}-alpine AS build
|
|
11
11
|
WORKDIR /app
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# committed encrypted .env.production decrypts only inside the
|
|
7
7
|
# container (the private key comes from DOTENV_PRIVATE_KEY_PRODUCTION,
|
|
8
8
|
# set on the Coolify app's env).
|
|
9
|
-
ARG NODE_VERSION=
|
|
9
|
+
ARG NODE_VERSION={{nodeMajor}}
|
|
10
10
|
|
|
11
11
|
FROM node:${NODE_VERSION}-alpine AS deps
|
|
12
12
|
WORKDIR /app
|
|
@@ -49,5 +49,8 @@ export declare class CloudflareApi {
|
|
|
49
49
|
created: boolean;
|
|
50
50
|
updated: boolean;
|
|
51
51
|
}>;
|
|
52
|
+
/** Delete a DNS record by id. Returns "not-found" on 404 so the
|
|
53
|
+
* caller can treat already-gone records as success during rollback. */
|
|
54
|
+
deleteRecord(zoneId: string, recordId: string): Promise<"deleted" | "not-found">;
|
|
52
55
|
}
|
|
53
56
|
//# sourceMappingURL=cloudflare-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-api.d.ts","sourceRoot":"","sources":["../../src/utils/cloudflare-api.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiBD,kCAAkC;AAClC,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,OAAO,EAAE,oBAAoB;YAK3B,OAAO;IAoBrB,iDAAiD;IAC3C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA2B5C,gEAAgE;IAC1D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAOjE,6DAA6D;IACvD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,GAC3B,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAQhG;;;qEAGiE;IAC3D,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QACN,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACA,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"cloudflare-api.d.ts","sourceRoot":"","sources":["../../src/utils/cloudflare-api.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiBD,kCAAkC;AAClC,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,OAAO,EAAE,oBAAoB;YAK3B,OAAO;IAoBrB,iDAAiD;IAC3C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA2B5C,gEAAgE;IAC1D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAOjE,6DAA6D;IACvD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,GAC3B,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAQhG;;;qEAGiE;IAC3D,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QACN,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACA,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IA8B9D;4EACwE;IAClE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;CAUvF"}
|
|
@@ -114,5 +114,19 @@ export class CloudflareApi {
|
|
|
114
114
|
const updated = await this.request("PATCH", `/zones/${zoneId}/dns_records/${existing.id}`, body);
|
|
115
115
|
return { id: updated.id, created: false, updated: true };
|
|
116
116
|
}
|
|
117
|
+
/** Delete a DNS record by id. Returns "not-found" on 404 so the
|
|
118
|
+
* caller can treat already-gone records as success during rollback. */
|
|
119
|
+
async deleteRecord(zoneId, recordId) {
|
|
120
|
+
try {
|
|
121
|
+
await this.request("DELETE", `/zones/${zoneId}/dns_records/${recordId}`);
|
|
122
|
+
return "deleted";
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
const msg = err.message;
|
|
126
|
+
if (/81044|not\s*found|404/i.test(msg))
|
|
127
|
+
return "not-found";
|
|
128
|
+
throw err;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
117
131
|
}
|
|
118
132
|
//# sourceMappingURL=cloudflare-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-api.js","sourceRoot":"","sources":["../../src/utils/cloudflare-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloudflare-api.js","sourceRoot":"","sources":["../../src/utils/cloudflare-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
/** One unit of mutation we know how to undo.
|
|
1
|
+
/** One unit of mutation we know how to undo.
|
|
2
|
+
*
|
|
3
|
+
* CRITICAL safety invariant: every kind here describes something
|
|
4
|
+
* hatchkit (create OR adopt) actually *created*. The undo path is
|
|
5
|
+
* free to delete the named resource. Code that records into the
|
|
6
|
+
* ledger MUST NOT record state that pre-existed — otherwise undo
|
|
7
|
+
* will destroy the user's own data.
|
|
8
|
+
*
|
|
9
|
+
* The `scaffold` kind in particular is `rm -rf <path>` — only ever
|
|
10
|
+
* recorded by `hatchkit create` (which generates the project dir
|
|
11
|
+
* itself). `hatchkit adopt` operates on existing repos and uses
|
|
12
|
+
* the fine-grained kinds (`manifest`, `dotenvxKeysFile`,
|
|
13
|
+
* `scaffoldedFile`, `gitInit`) instead — never `scaffold`. */
|
|
2
14
|
export type LedgerStep = {
|
|
3
15
|
kind: "scaffold";
|
|
4
16
|
path: string;
|
|
@@ -8,6 +20,12 @@ export type LedgerStep = {
|
|
|
8
20
|
} | {
|
|
9
21
|
kind: "glitchtip";
|
|
10
22
|
project: string;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "openpanel";
|
|
25
|
+
project: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: "resend";
|
|
28
|
+
client: string;
|
|
11
29
|
} | {
|
|
12
30
|
kind: "tfvars";
|
|
13
31
|
path: string;
|
|
@@ -21,6 +39,9 @@ export type LedgerStep = {
|
|
|
21
39
|
kind: "terraformApplied";
|
|
22
40
|
stackDir: string;
|
|
23
41
|
tfvarsPath: string;
|
|
42
|
+
} | {
|
|
43
|
+
kind: "coolifyProject";
|
|
44
|
+
uuid: string;
|
|
24
45
|
} | {
|
|
25
46
|
kind: "coolifyApp";
|
|
26
47
|
uuid: string;
|
|
@@ -31,6 +52,24 @@ export type LedgerStep = {
|
|
|
31
52
|
kind: "mlService";
|
|
32
53
|
platform: string;
|
|
33
54
|
name: string;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "manifest";
|
|
57
|
+
path: string;
|
|
58
|
+
} | {
|
|
59
|
+
kind: "dotenvxKeysFile";
|
|
60
|
+
path: string;
|
|
61
|
+
} | {
|
|
62
|
+
kind: "scaffoldedFile";
|
|
63
|
+
path: string;
|
|
64
|
+
} | {
|
|
65
|
+
kind: "gitInit";
|
|
66
|
+
path: string;
|
|
67
|
+
} | {
|
|
68
|
+
kind: "cloudflareDnsRecord";
|
|
69
|
+
zoneId: string;
|
|
70
|
+
recordId: string;
|
|
71
|
+
name: string;
|
|
72
|
+
type: "A" | "AAAA" | "CNAME";
|
|
34
73
|
};
|
|
35
74
|
export interface LedgerData {
|
|
36
75
|
/** Project slug. Also the filename. */
|
|
@@ -51,6 +90,13 @@ export declare class RunLedger {
|
|
|
51
90
|
static start(name: string): RunLedger;
|
|
52
91
|
/** Load the ledger for a project, if one exists. */
|
|
53
92
|
static load(name: string): RunLedger | null;
|
|
93
|
+
/** Resume an existing ledger (preserving recorded steps), or start
|
|
94
|
+
* a new one. Used by `hatchkit adopt --resume` so a partial first
|
|
95
|
+
* run's ledger entries survive into the second run — destroy of
|
|
96
|
+
* the union is then the safe outcome if --resume itself fails.
|
|
97
|
+
* Clears `finishedAt` so handleAdoptFailure knows we're in flight
|
|
98
|
+
* again even if the previous attempt called `complete()`. */
|
|
99
|
+
static resumeOrStart(name: string): RunLedger;
|
|
54
100
|
/** Append a step and flush immediately. */
|
|
55
101
|
record(step: LedgerStep): void;
|
|
56
102
|
/** Mark the run finished. The ledger sticks around so `hatchkit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-ledger.d.ts","sourceRoot":"","sources":["../../src/utils/run-ledger.ts"],"names":[],"mappings":"AAoBA
|
|
1
|
+
{"version":3,"file":"run-ledger.d.ts","sourceRoot":"","sources":["../../src/utils/run-ledger.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;+DAY+D;AAC/D,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAIrD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;CAC9B,CAAC;AAEN,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAgBD,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,IAAI;IAFd,OAAO;IAKP;yEACqE;IACrE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAYrC,oDAAoD;IACpD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAW3C;;;;;kEAK8D;IAC9D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAU7C,2CAA2C;IAC3C,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK9B;qCACiC;IACjC,QAAQ,IAAI,IAAI;IAKhB,qEAAqE;IACrE,MAAM,IAAI,IAAI;IAId,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,SAAS,UAAU,EAAE,CAEjC;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,KAAK;CAGd"}
|
package/dist/utils/run-ledger.js
CHANGED
|
@@ -61,6 +61,21 @@ export class RunLedger {
|
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
/** Resume an existing ledger (preserving recorded steps), or start
|
|
65
|
+
* a new one. Used by `hatchkit adopt --resume` so a partial first
|
|
66
|
+
* run's ledger entries survive into the second run — destroy of
|
|
67
|
+
* the union is then the safe outcome if --resume itself fails.
|
|
68
|
+
* Clears `finishedAt` so handleAdoptFailure knows we're in flight
|
|
69
|
+
* again even if the previous attempt called `complete()`. */
|
|
70
|
+
static resumeOrStart(name) {
|
|
71
|
+
const existing = RunLedger.load(name);
|
|
72
|
+
if (existing) {
|
|
73
|
+
existing.data.finishedAt = undefined;
|
|
74
|
+
existing.flush();
|
|
75
|
+
return existing;
|
|
76
|
+
}
|
|
77
|
+
return RunLedger.start(name);
|
|
78
|
+
}
|
|
64
79
|
/** Append a step and flush immediately. */
|
|
65
80
|
record(step) {
|
|
66
81
|
this.data.steps.push(step);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-ledger.js","sourceRoot":"","sources":["../../src/utils/run-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run-ledger.js","sourceRoot":"","sources":["../../src/utils/run-ledger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED