@percher/core 0.4.7 → 0.4.9
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/commands/export.d.ts +4 -5
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +17 -24
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/reproduce.d.ts +12 -0
- package/dist/commands/reproduce.d.ts.map +1 -1
- package/dist/commands/reproduce.js +27 -17
- package/dist/commands/reproduce.js.map +1 -1
- package/package.json +3 -1
|
@@ -38,11 +38,10 @@ export interface ExportResult {
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function exportApp(ctx: Context, input: ExportInput): Promise<ExportResult>;
|
|
40
40
|
/**
|
|
41
|
-
* Owner-only git-bundle export
|
|
42
|
-
* `
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* deploy history that re-clones with `git clone <file>`.
|
|
41
|
+
* Owner-only git-bundle export: stream `GET /apps/:app/export/git` to a
|
|
42
|
+
* `.bundle` file. No token-mint step (the endpoint is bearer-authed and
|
|
43
|
+
* owner-gated server-side); it streams a `git bundle` of the whole deploy
|
|
44
|
+
* history that re-clones with `git clone <file>`.
|
|
46
45
|
*/
|
|
47
46
|
export declare function exportGitBundle(ctx: Context, input: ExportGitInput): Promise<GitExportResult>;
|
|
48
47
|
//# sourceMappingURL=export.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,iBAAiB;;;;;;;iBAQ5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;iBAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,eAAe,EAAE,KAAK,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,iBAAiB;;;;;;;iBAQ5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;iBAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,eAAe,EAAE,KAAK,CAAC;CACxB;AAqGD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAyBvF;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,eAAe,CAAC,CAkB1B"}
|
package/dist/commands/export.js
CHANGED
|
@@ -30,18 +30,14 @@ function resolveAppName(ctx, provided) {
|
|
|
30
30
|
return name;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
* Stream the response body
|
|
34
|
-
*
|
|
33
|
+
* Stream the response body to disk with constant memory (no full-archive
|
|
34
|
+
* buffering). Uses `node:fs` streams, NOT `Bun.file`, so the CLI/MCP work under
|
|
35
|
+
* Node (built `--target node`, where `Bun` is undefined); reads the web stream
|
|
36
|
+
* manually with backpressure, propagating source- and write-side errors.
|
|
35
37
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* source- and write-side errors.
|
|
40
|
-
*
|
|
41
|
-
* Writes to a temporary sibling and atomically renames into place only on
|
|
42
|
-
* success, so a mid-stream failure can never clobber an existing file at
|
|
43
|
-
* `outPath` (e.g. `--out` pointing at a file the user wants to keep). The temp
|
|
44
|
-
* file is a sibling so the rename stays on one filesystem (atomic).
|
|
38
|
+
* Writes to a unique sibling temp and renames into place only on success, so a
|
|
39
|
+
* mid-stream failure can't clobber an existing `--out` file. Sibling temp =
|
|
40
|
+
* same filesystem = atomic rename.
|
|
45
41
|
*/
|
|
46
42
|
async function streamToFile(outPath, source) {
|
|
47
43
|
// A unique sibling temp so concurrent exports to the same destination can't
|
|
@@ -65,7 +61,7 @@ async function streamToFile(outPath, source) {
|
|
|
65
61
|
try {
|
|
66
62
|
for (;;) {
|
|
67
63
|
// `reader.read()` rejects if the SOURCE stream errors (e.g. the download
|
|
68
|
-
// drops)
|
|
64
|
+
// drops), so a mid-stream failure surfaces here instead of hanging.
|
|
69
65
|
const { done, value } = await Promise.race([reader.read(), writeFailed]);
|
|
70
66
|
if (done)
|
|
71
67
|
break;
|
|
@@ -88,18 +84,16 @@ async function streamToFile(outPath, source) {
|
|
|
88
84
|
await closed; // fd fully released before the rename below
|
|
89
85
|
}
|
|
90
86
|
catch (err) {
|
|
91
|
-
// Remove ONLY the temp
|
|
92
|
-
//
|
|
93
|
-
// handle to close first, or the unlink no-ops on Windows and strands it.
|
|
87
|
+
// Remove ONLY the temp; the destination is untouched, so an existing file
|
|
88
|
+
// survives. Wait for close first, or the unlink no-ops on Windows.
|
|
94
89
|
out.destroy();
|
|
95
90
|
await closed;
|
|
96
91
|
await unlink(tmpPath).catch(() => { });
|
|
97
92
|
throw err;
|
|
98
93
|
}
|
|
99
|
-
// Atomic publish: rename
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
// permission error), drop the finished temp so it isn't stranded.
|
|
94
|
+
// Atomic publish: rename replaces the destination in one step (on every
|
|
95
|
+
// platform), so readers never see a half-written file. Drop the temp if the
|
|
96
|
+
// rename itself fails (Windows file lock, permission error).
|
|
103
97
|
try {
|
|
104
98
|
await rename(tmpPath, outPath);
|
|
105
99
|
}
|
|
@@ -150,11 +144,10 @@ export async function exportApp(ctx, input) {
|
|
|
150
144
|
};
|
|
151
145
|
}
|
|
152
146
|
/**
|
|
153
|
-
* Owner-only git-bundle export
|
|
154
|
-
* `
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
* deploy history that re-clones with `git clone <file>`.
|
|
147
|
+
* Owner-only git-bundle export: stream `GET /apps/:app/export/git` to a
|
|
148
|
+
* `.bundle` file. No token-mint step (the endpoint is bearer-authed and
|
|
149
|
+
* owner-gated server-side); it streams a `git bundle` of the whole deploy
|
|
150
|
+
* history that re-clones with `git clone <file>`.
|
|
158
151
|
*/
|
|
159
152
|
export async function exportGitBundle(ctx, input) {
|
|
160
153
|
const name = resolveAppName(ctx, input.app);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B;;6BAEyB;IACzB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACpD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,0EAA0E;IAC1E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAwBH,SAAS,cAAc,CAAC,GAAY,EAAE,QAAiB;IACrD,MAAM,IAAI,GAAG,QAAQ,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE;YACvE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,8DAA8D;SACrE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { Context } from "../context";
|
|
3
|
+
/**
|
|
4
|
+
* Run a subprocess and resolve with its exit code. Uses `cross-spawn`, not
|
|
5
|
+
* `node:child_process` (and not `Bun.spawn`), so it works under Node and
|
|
6
|
+
* resolves Windows `.cmd` shims like `nixpacks.cmd` that Node's bare `spawn`
|
|
7
|
+
* ENOENTs on. No `shell: true`, so the validated `deployId` in argv can't
|
|
8
|
+
* inject. Rejects on a spawn error; callers treat any failure as "tool
|
|
9
|
+
* unavailable".
|
|
10
|
+
*/
|
|
11
|
+
export declare function runProcessExit(cmd: string, args: string[], opts?: {
|
|
12
|
+
cwd?: string;
|
|
13
|
+
inherit?: boolean;
|
|
14
|
+
}): Promise<number>;
|
|
3
15
|
export declare const reproduceInputSchema: z.ZodObject<{
|
|
4
16
|
app: z.ZodOptional<z.ZodString>;
|
|
5
17
|
deployId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reproduce.d.ts","sourceRoot":"","sources":["../../src/commands/reproduce.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reproduce.d.ts","sourceRoot":"","sources":["../../src/commands/reproduce.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7C,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,eAAO,MAAM,oBAAoB;;;iBAU/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,GAAG,qBAAqB,GAAG,aAAa,GAAG,QAAQ,CAAC;IACvE,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;oCAEgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;sDACkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;6DAGyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAuL7F"}
|
|
@@ -2,8 +2,27 @@ import { mkdtempSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { PercherApiError } from "@percher/client";
|
|
5
|
+
import crossSpawn from "cross-spawn";
|
|
5
6
|
import { z } from "zod";
|
|
6
7
|
import { readPercherTomlAppName } from "../app-name";
|
|
8
|
+
/**
|
|
9
|
+
* Run a subprocess and resolve with its exit code. Uses `cross-spawn`, not
|
|
10
|
+
* `node:child_process` (and not `Bun.spawn`), so it works under Node and
|
|
11
|
+
* resolves Windows `.cmd` shims like `nixpacks.cmd` that Node's bare `spawn`
|
|
12
|
+
* ENOENTs on. No `shell: true`, so the validated `deployId` in argv can't
|
|
13
|
+
* inject. Rejects on a spawn error; callers treat any failure as "tool
|
|
14
|
+
* unavailable".
|
|
15
|
+
*/
|
|
16
|
+
export function runProcessExit(cmd, args, opts = {}) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const child = crossSpawn(cmd, args, {
|
|
19
|
+
cwd: opts.cwd,
|
|
20
|
+
stdio: opts.inherit ? "inherit" : "ignore",
|
|
21
|
+
});
|
|
22
|
+
child.on("error", reject);
|
|
23
|
+
child.on("close", (code) => resolve(code ?? 1));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
7
26
|
export const reproduceInputSchema = z.object({
|
|
8
27
|
app: z
|
|
9
28
|
.string()
|
|
@@ -125,7 +144,6 @@ export async function reproduce(ctx, input) {
|
|
|
125
144
|
// Write to tmp + extract. Use system `tar` because:
|
|
126
145
|
// - macOS/Linux ship it
|
|
127
146
|
// - Windows 10+ has `tar.exe` since 1803 (April 2018)
|
|
128
|
-
// - Bun.spawn streams correctly across platforms
|
|
129
147
|
// Fall back to "saved tarball, extract manually" if tar isn't
|
|
130
148
|
// available — the user keeps the bytes either way.
|
|
131
149
|
const tmpDir = mkdtempSync(join(tmpdir(), `percher-reproduce-${input.deployId}-`));
|
|
@@ -133,12 +151,7 @@ export async function reproduce(ctx, input) {
|
|
|
133
151
|
writeFileSync(tarballPath, bytes);
|
|
134
152
|
let extracted = false;
|
|
135
153
|
try {
|
|
136
|
-
|
|
137
|
-
stdout: "pipe",
|
|
138
|
-
stderr: "pipe",
|
|
139
|
-
});
|
|
140
|
-
const exitCode = await proc.exited;
|
|
141
|
-
extracted = exitCode === 0;
|
|
154
|
+
extracted = (await runProcessExit("tar", ["-xzf", tarballPath, "-C", tmpDir])) === 0;
|
|
142
155
|
}
|
|
143
156
|
catch {
|
|
144
157
|
/* tar not on PATH — fall through */
|
|
@@ -166,9 +179,7 @@ export async function reproduce(ctx, input) {
|
|
|
166
179
|
let builtLocally = false;
|
|
167
180
|
let nixpacksAvailable = false;
|
|
168
181
|
try {
|
|
169
|
-
|
|
170
|
-
const code = await which.exited;
|
|
171
|
-
nixpacksAvailable = code === 0;
|
|
182
|
+
nixpacksAvailable = (await runProcessExit("nixpacks", ["--version"])) === 0;
|
|
172
183
|
}
|
|
173
184
|
catch {
|
|
174
185
|
/* not installed */
|
|
@@ -176,13 +187,12 @@ export async function reproduce(ctx, input) {
|
|
|
176
187
|
if (nixpacksAvailable) {
|
|
177
188
|
ctx.status("Running nixpacks build locally...");
|
|
178
189
|
try {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
builtLocally = code === 0;
|
|
190
|
+
// inherit so the user sees the build output live.
|
|
191
|
+
builtLocally =
|
|
192
|
+
(await runProcessExit("nixpacks", ["build", tmpDir, "--name", `repro-${input.deployId}`], {
|
|
193
|
+
cwd: tmpDir,
|
|
194
|
+
inherit: true,
|
|
195
|
+
})) === 0;
|
|
186
196
|
}
|
|
187
197
|
catch {
|
|
188
198
|
/* spawn failed despite version check passing — rare but tolerable */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reproduce.js","sourceRoot":"","sources":["../../src/commands/reproduce.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reproduce.js","sourceRoot":"","sources":["../../src/commands/reproduce.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@percher/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Core logic and CLI commands for the Percher hosting platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -35,12 +35,14 @@
|
|
|
35
35
|
"@percher/shared": "^0.1.4",
|
|
36
36
|
"@percher/toml": "^0.1.5",
|
|
37
37
|
"@types/jscodeshift": "17.3.0",
|
|
38
|
+
"cross-spawn": "^7.0.6",
|
|
38
39
|
"ignore": "^7.0.5",
|
|
39
40
|
"jscodeshift": "17.3.0",
|
|
40
41
|
"tar-stream": "^3.1.7",
|
|
41
42
|
"zod": "^4.3.6"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
45
|
+
"@types/cross-spawn": "^6.0.6",
|
|
44
46
|
"@types/tar-stream": "^3.1.3",
|
|
45
47
|
"bun-types": "^1.1.0"
|
|
46
48
|
},
|