@tamagui/native-ci 2.0.0-rc.4 → 2.0.0-rc.40
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/cache.mjs +26 -13
- package/dist/cache.mjs.map +1 -1
- package/dist/cli.mjs +268 -117
- package/dist/cli.mjs.map +1 -1
- package/dist/constants.mjs +8 -8
- package/dist/constants.mjs.map +1 -1
- package/dist/deps.mjs +46 -19
- package/dist/deps.mjs.map +1 -1
- package/dist/detox.mjs +85 -56
- package/dist/detox.mjs.map +1 -1
- package/dist/fingerprint.mjs +13 -9
- package/dist/fingerprint.mjs.map +1 -1
- package/dist/index.js +9 -95
- package/dist/index.js.map +1 -6
- package/dist/metro.mjs +91 -30
- package/dist/metro.mjs.map +1 -1
- package/dist/runner.mjs +27 -19
- package/dist/runner.mjs.map +1 -1
- package/package.json +4 -3
- package/src/cli.ts +24 -2
- package/src/detox.ts +10 -1
- package/src/ios.ts +192 -15
- package/src/metro.ts +49 -2
- package/src/run-detox-android.ts +1 -0
- package/src/run-detox-ios.ts +1 -0
- package/types/detox.d.ts +3 -0
- package/types/detox.d.ts.map +1 -1
- package/types/ios.d.ts +29 -0
- package/types/ios.d.ts.map +1 -1
- package/types/metro.d.ts.map +1 -1
- package/dist/cache.js +0 -71
- package/dist/cache.js.map +0 -6
- package/dist/cli.js +0 -298
- package/dist/cli.js.map +0 -6
- package/dist/constants.js +0 -12
- package/dist/constants.js.map +0 -6
- package/dist/deps.js +0 -44
- package/dist/deps.js.map +0 -6
- package/dist/detox.js +0 -73
- package/dist/detox.js.map +0 -6
- package/dist/fingerprint.js +0 -43
- package/dist/fingerprint.js.map +0 -6
- package/dist/metro.js +0 -102
- package/dist/metro.js.map +0 -6
- package/dist/runner.js +0 -73
- package/dist/runner.js.map +0 -6
package/dist/detox.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { parseArgs } from "node:util";
|
|
2
|
-
import { DETOX_SERVER_PORT } from "./constants";
|
|
3
|
-
function parseDetoxArgs(platform) {
|
|
4
|
-
const defaultConfig = platform === "ios" ? "ios.sim.debug" : "android.emu.ci.debug", { values } = parseArgs({
|
|
5
|
-
options: {
|
|
6
|
-
config: { type: "string", default: defaultConfig },
|
|
7
|
-
"project-root": { type: "string", default: process.cwd() },
|
|
8
|
-
headless: { type: "boolean", default: !1 },
|
|
9
|
-
"record-logs": { type: "string", default: "all" },
|
|
10
|
-
retries: { type: "string", default: "0" },
|
|
11
|
-
workers: { type: "string", default: "1" }
|
|
12
|
-
}
|
|
13
|
-
}), retriesNum = Number.parseInt(values.retries, 10);
|
|
14
|
-
(Number.isNaN(retriesNum) || retriesNum < 0) && (console.error("Error: retries must be a non-negative integer"), process.exit(1));
|
|
15
|
-
const workersNum = Number.parseInt(values.workers, 10);
|
|
16
|
-
return (Number.isNaN(workersNum) || workersNum < 1) && (console.error("Error: workers must be a positive integer"), process.exit(1)), {
|
|
17
|
-
config: values.config,
|
|
18
|
-
projectRoot: values["project-root"],
|
|
19
|
-
headless: values.headless,
|
|
20
|
-
recordLogs: values["record-logs"],
|
|
21
|
-
retries: retriesNum,
|
|
22
|
-
workers: workersNum
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
function buildDetoxArgs(options) {
|
|
26
|
-
const args = [
|
|
27
|
-
"detox",
|
|
28
|
-
"test",
|
|
29
|
-
"--configuration",
|
|
30
|
-
options.config,
|
|
31
|
-
"--record-logs",
|
|
32
|
-
options.recordLogs,
|
|
33
|
-
"--retries",
|
|
34
|
-
String(options.retries),
|
|
35
|
-
// force jest to exit after tests complete (prevents hanging on open handles)
|
|
36
|
-
"--forceExit"
|
|
37
|
-
];
|
|
38
|
-
return options.headless && args.push("--headless"), options.workers && options.workers > 1 && args.push("--workers", String(options.workers)), args;
|
|
39
|
-
}
|
|
40
|
-
const DETOX_TIMEOUT_MS = 2700 * 1e3;
|
|
41
|
-
async function resetDetoxLockFile() {
|
|
42
|
-
console.info("Resetting Detox lock file..."), await Bun.spawn(["npx", "detox", "reset-lock-file"], {
|
|
43
|
-
stdout: "inherit",
|
|
44
|
-
stderr: "inherit"
|
|
45
|
-
}).exited;
|
|
46
|
-
}
|
|
47
|
-
async function runDetoxTests(options) {
|
|
48
|
-
await resetDetoxLockFile();
|
|
49
|
-
const detoxArgs = buildDetoxArgs(options);
|
|
50
|
-
console.info(`
|
|
51
|
-
--- Running Detox tests ---`), console.info(`Using fixed Detox server port: ${DETOX_SERVER_PORT}`), console.info(`Command: npx ${detoxArgs.join(" ")}`);
|
|
52
|
-
const proc = Bun.spawn(["npx", ...detoxArgs], {
|
|
53
|
-
env: { ...process.env, DETOX_SERVER_PORT: String(DETOX_SERVER_PORT) },
|
|
54
|
-
stdout: "inherit",
|
|
55
|
-
stderr: "inherit"
|
|
56
|
-
}), timeoutPromise = new Promise((resolve) => {
|
|
57
|
-
setTimeout(() => resolve("timeout"), DETOX_TIMEOUT_MS);
|
|
58
|
-
}), result = await Promise.race([proc.exited, timeoutPromise]);
|
|
59
|
-
if (result === "timeout")
|
|
60
|
-
return console.info(`
|
|
61
|
-
Detox timed out, killing process...`), proc.kill("SIGKILL"), 1;
|
|
62
|
-
const exitCode = result;
|
|
63
|
-
return console.info(exitCode === 0 ? `
|
|
64
|
-
All tests passed!` : `
|
|
65
|
-
Tests failed with exit code: ${exitCode}`), exitCode;
|
|
66
|
-
}
|
|
67
|
-
export {
|
|
68
|
-
buildDetoxArgs,
|
|
69
|
-
parseDetoxArgs,
|
|
70
|
-
resetDetoxLockFile,
|
|
71
|
-
runDetoxTests
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=detox.js.map
|
package/dist/detox.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/detox.ts"],
|
|
4
|
-
"mappings": "AAMA,SAAS,iBAAiB;AAE1B,SAAS,yBAAyB;AAoB3B,SAAS,eAAe,UAAoB;AACjD,QAAM,gBAAgB,aAAa,QAAQ,kBAAkB,wBAEvD,EAAE,OAAO,IAAI,UAAU;AAAA,IAC3B,SAAS;AAAA,MACP,QAAQ,EAAE,MAAM,UAAU,SAAS,cAAc;AAAA,MACjD,gBAAgB,EAAE,MAAM,UAAU,SAAS,QAAQ,IAAI,EAAE;AAAA,MACzD,UAAU,EAAE,MAAM,WAAW,SAAS,GAAM;AAAA,MAC5C,eAAe,EAAE,MAAM,UAAU,SAAS,MAAM;AAAA,MAChD,SAAS,EAAE,MAAM,UAAU,SAAS,IAAI;AAAA,MACxC,SAAS,EAAE,MAAM,UAAU,SAAS,IAAI;AAAA,IAC1C;AAAA,EACF,CAAC,GAGK,aAAa,OAAO,SAAS,OAAO,SAAU,EAAE;AACtD,GAAI,OAAO,MAAM,UAAU,KAAK,aAAa,OAC3C,QAAQ,MAAM,+CAA+C,GAC7D,QAAQ,KAAK,CAAC;AAIhB,QAAM,aAAa,OAAO,SAAS,OAAO,SAAU,EAAE;AACtD,UAAI,OAAO,MAAM,UAAU,KAAK,aAAa,OAC3C,QAAQ,MAAM,2CAA2C,GACzD,QAAQ,KAAK,CAAC,IAGT;AAAA,IACL,QAAQ,OAAO;AAAA,IACf,aAAa,OAAO,cAAc;AAAA,IAClC,UAAU,OAAO;AAAA,IACjB,YAAY,OAAO,aAAa;AAAA,IAChC,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAKO,SAAS,eAAe,SAAuC;AACpE,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,OAAO,QAAQ,OAAO;AAAA;AAAA,IAEtB;AAAA,EACF;AAEA,SAAI,QAAQ,YACV,KAAK,KAAK,YAAY,GAIpB,QAAQ,WAAW,QAAQ,UAAU,KACvC,KAAK,KAAK,aAAa,OAAO,QAAQ,OAAO,CAAC,GAGzC;AACT;AAGA,MAAM,mBAAmB,OAAU;AAMnC,eAAsB,qBAAoC;AACxD,UAAQ,KAAK,8BAA8B,GAK3C,MAJa,IAAI,MAAM,CAAC,OAAO,SAAS,iBAAiB,GAAG;AAAA,IAC1D,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC,EACU;AACb;AAOA,eAAsB,cAAc,SAA8C;AAGhF,QAAM,mBAAmB;AAEzB,QAAM,YAAY,eAAe,OAAO;AAExC,UAAQ,KAAK;AAAA,4BAA+B,GAC5C,QAAQ,KAAK,kCAAkC,iBAAiB,EAAE,GAClE,QAAQ,KAAK,gBAAgB,UAAU,KAAK,GAAG,CAAC,EAAE;AAGlD,QAAM,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG;AAAA,IAC5C,KAAK,EAAE,GAAG,QAAQ,KAAK,mBAAmB,OAAO,iBAAiB,EAAE;AAAA,IACpE,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC,GAGK,iBAAiB,IAAI,QAAmB,CAAC,YAAY;AACzD,eAAW,MAAM,QAAQ,SAAS,GAAG,gBAAgB;AAAA,EACvD,CAAC,GAEK,SAAS,MAAM,QAAQ,KAAK,CAAC,KAAK,QAAQ,cAAc,CAAC;AAE/D,MAAI,WAAW;AACb,mBAAQ,KAAK;AAAA,oCAAuC,GACpD,KAAK,KAAK,SAAS,GACZ;AAGT,QAAM,WAAW;AAEjB,SACE,QAAQ,KADN,aAAa,IACF;AAAA,qBAEA;AAAA,+BAAkC,QAAQ,EAFrB,GAK7B;AACT;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/fingerprint.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
import { createHash } from "node:crypto";
|
|
3
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
async function generateFingerprint(options) {
|
|
6
|
-
const { platform, projectRoot = process.cwd(), debug = !1 } = options, appJsonPath = join(projectRoot, "app.json");
|
|
7
|
-
if (!existsSync(appJsonPath))
|
|
8
|
-
throw new Error(`No app.json found at ${projectRoot}. Is this an Expo project?`);
|
|
9
|
-
const execOptions = {
|
|
10
|
-
cwd: projectRoot,
|
|
11
|
-
encoding: "utf-8",
|
|
12
|
-
stdio: debug ? "inherit" : ["pipe", "pipe", "pipe"]
|
|
13
|
-
};
|
|
14
|
-
try {
|
|
15
|
-
const result = execSync(
|
|
16
|
-
`npx @expo/fingerprint fingerprint:generate --platform ${platform}`,
|
|
17
|
-
execOptions
|
|
18
|
-
), parsed = JSON.parse(result);
|
|
19
|
-
return {
|
|
20
|
-
hash: parsed.hash,
|
|
21
|
-
sources: parsed.sources || []
|
|
22
|
-
};
|
|
23
|
-
} catch (error) {
|
|
24
|
-
const err = error;
|
|
25
|
-
throw new Error(
|
|
26
|
-
`Failed to generate ${platform} fingerprint: ${err.message}${err.stderr ? `
|
|
27
|
-
${err.stderr}` : ""}`
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function generatePreFingerprintHash(files, projectRoot = process.cwd()) {
|
|
32
|
-
const hash = createHash("sha256");
|
|
33
|
-
for (const file of files) {
|
|
34
|
-
const filePath = join(projectRoot, file);
|
|
35
|
-
existsSync(filePath) && hash.update(readFileSync(filePath));
|
|
36
|
-
}
|
|
37
|
-
return hash.digest("hex").slice(0, 16);
|
|
38
|
-
}
|
|
39
|
-
export {
|
|
40
|
-
generateFingerprint,
|
|
41
|
-
generatePreFingerprintHash
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=fingerprint.js.map
|
package/dist/fingerprint.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/fingerprint.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAsC;AAC/C,SAAS,kBAAkB;AAC3B,SAAS,YAAY,oBAAoB;AACzC,SAAS,YAAY;AAkBrB,eAAsB,oBACpB,SAC4B;AAC5B,QAAM,EAAE,UAAU,cAAc,QAAQ,IAAI,GAAG,QAAQ,GAAM,IAAI,SAG3D,cAAc,KAAK,aAAa,UAAU;AAChD,MAAI,CAAC,WAAW,WAAW;AACzB,UAAM,IAAI,MAAM,wBAAwB,WAAW,4BAA4B;AAGjF,QAAM,cAA+B;AAAA,IACnC,KAAK;AAAA,IACL,UAAU;AAAA,IACV,OAAO,QAAQ,YAAY,CAAC,QAAQ,QAAQ,MAAM;AAAA,EACpD;AAEA,MAAI;AACF,UAAM,SAAS;AAAA,MACb,yDAAyD,QAAQ;AAAA,MACjE;AAAA,IACF,GAEM,SAAS,KAAK,MAAM,MAAM;AAEhC,WAAO;AAAA,MACL,MAAM,OAAO;AAAA,MACb,SAAS,OAAO,WAAW,CAAC;AAAA,IAC9B;AAAA,EACF,SAAS,OAAO;AACd,UAAM,MAAM;AACZ,UAAM,IAAI;AAAA,MACR,sBAAsB,QAAQ,iBAAiB,IAAI,OAAO,GAAG,IAAI,SAAS;AAAA,EAAK,IAAI,MAAM,KAAK,EAAE;AAAA,IAClG;AAAA,EACF;AACF;AAMO,SAAS,2BACd,OACA,cAAsB,QAAQ,IAAI,GAC1B;AACR,QAAM,OAAO,WAAW,QAAQ;AAEhC,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,KAAK,aAAa,IAAI;AACvC,IAAI,WAAW,QAAQ,KACrB,KAAK,OAAO,aAAa,QAAQ,CAAC;AAAA,EAEtC;AAEA,SAAO,KAAK,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AACvC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/metro.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
METRO_URL,
|
|
3
|
-
DEFAULT_METRO_WAIT_ATTEMPTS,
|
|
4
|
-
DEFAULT_METRO_WAIT_INTERVAL_MS
|
|
5
|
-
} from "./constants";
|
|
6
|
-
async function waitForMetro(options) {
|
|
7
|
-
const {
|
|
8
|
-
platform,
|
|
9
|
-
maxAttempts = DEFAULT_METRO_WAIT_ATTEMPTS,
|
|
10
|
-
intervalMs = DEFAULT_METRO_WAIT_INTERVAL_MS
|
|
11
|
-
} = options;
|
|
12
|
-
console.info("Waiting for Metro to start...");
|
|
13
|
-
for (let i = 1; i <= maxAttempts; i++) {
|
|
14
|
-
try {
|
|
15
|
-
if ((await fetch(`${METRO_URL}/`, {
|
|
16
|
-
headers: { "Expo-Platform": platform }
|
|
17
|
-
})).ok)
|
|
18
|
-
return console.info("Metro is responding!"), !0;
|
|
19
|
-
} catch {
|
|
20
|
-
}
|
|
21
|
-
console.info(`Waiting for Metro... (${i}/${maxAttempts})`), await Bun.sleep(intervalMs);
|
|
22
|
-
}
|
|
23
|
-
return !1;
|
|
24
|
-
}
|
|
25
|
-
async function prewarmBundle(platform) {
|
|
26
|
-
console.info("Pre-warming bundle...");
|
|
27
|
-
try {
|
|
28
|
-
const response = await fetch(`${METRO_URL}/`, {
|
|
29
|
-
headers: { "Expo-Platform": platform }
|
|
30
|
-
});
|
|
31
|
-
if (response.ok) {
|
|
32
|
-
const bundleUrl = (await response.json())?.launchAsset?.url;
|
|
33
|
-
bundleUrl ? (console.info(`Fetching bundle from: ${bundleUrl}`), await fetch(bundleUrl), console.info("Bundle pre-warmed!")) : console.info("No bundle URL found in manifest, skipping pre-warm");
|
|
34
|
-
}
|
|
35
|
-
} catch {
|
|
36
|
-
console.info("Bundle pre-warm completed (with error, continuing)");
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function startMetro() {
|
|
40
|
-
console.info(`
|
|
41
|
-
--- Starting Metro bundler ---`);
|
|
42
|
-
const isCI = !!process.env.CI, args = ["bun", "expo", "start", "--dev-client", "--offline"];
|
|
43
|
-
isCI && (args.push("--clear"), console.info("CI detected: clearing Metro cache"));
|
|
44
|
-
const proc = Bun.spawn(args, {
|
|
45
|
-
env: { ...process.env, EXPO_NO_TELEMETRY: "true" },
|
|
46
|
-
stdout: "inherit",
|
|
47
|
-
stderr: "inherit"
|
|
48
|
-
});
|
|
49
|
-
return {
|
|
50
|
-
proc,
|
|
51
|
-
kill: async () => {
|
|
52
|
-
const pid = proc.pid;
|
|
53
|
-
if (pid)
|
|
54
|
-
try {
|
|
55
|
-
await Bun.spawn(["pkill", "-P", String(pid)], {
|
|
56
|
-
stdout: "ignore",
|
|
57
|
-
stderr: "ignore"
|
|
58
|
-
}).exited;
|
|
59
|
-
} catch {
|
|
60
|
-
}
|
|
61
|
-
proc.kill("SIGKILL"), console.info("Metro stopped");
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
function setupSignalHandlers(metro) {
|
|
66
|
-
const cleanup = async (signal) => {
|
|
67
|
-
console.info(`
|
|
68
|
-
Received ${signal}, cleaning up...`), await metro.kill(), process.exit(signal === "SIGINT" ? 130 : 143);
|
|
69
|
-
};
|
|
70
|
-
process.on("SIGINT", () => cleanup("SIGINT")), process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
71
|
-
}
|
|
72
|
-
async function isMetroRunning(platform) {
|
|
73
|
-
try {
|
|
74
|
-
return (await fetch(`${METRO_URL}/`, {
|
|
75
|
-
headers: { "Expo-Platform": platform }
|
|
76
|
-
})).ok;
|
|
77
|
-
} catch {
|
|
78
|
-
return !1;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async function withMetro(platform, fn) {
|
|
82
|
-
if (await isMetroRunning(platform))
|
|
83
|
-
return console.info(`
|
|
84
|
-
--- Metro already running, reusing existing instance ---`), await prewarmBundle(platform), await fn();
|
|
85
|
-
const metro = startMetro();
|
|
86
|
-
setupSignalHandlers(metro);
|
|
87
|
-
try {
|
|
88
|
-
if (!await waitForMetro({ platform }))
|
|
89
|
-
throw new Error("Metro failed to start within timeout");
|
|
90
|
-
return await prewarmBundle(platform), await fn();
|
|
91
|
-
} finally {
|
|
92
|
-
await metro.kill();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
export {
|
|
96
|
-
prewarmBundle,
|
|
97
|
-
setupSignalHandlers,
|
|
98
|
-
startMetro,
|
|
99
|
-
waitForMetro,
|
|
100
|
-
withMetro
|
|
101
|
-
};
|
|
102
|
-
//# sourceMappingURL=metro.js.map
|
package/dist/metro.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/metro.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/runner.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
import { appendFileSync } from "node:fs";
|
|
3
|
-
import { createCacheKey, loadCache, saveCache } from "./cache";
|
|
4
|
-
import { generateFingerprint } from "./fingerprint";
|
|
5
|
-
async function runWithCache(options) {
|
|
6
|
-
const {
|
|
7
|
-
platform,
|
|
8
|
-
buildCommand,
|
|
9
|
-
outputPaths,
|
|
10
|
-
projectRoot = process.cwd(),
|
|
11
|
-
cachePrefix = "native-build",
|
|
12
|
-
debug = !1
|
|
13
|
-
} = options, log = debug ? console.log : () => {
|
|
14
|
-
};
|
|
15
|
-
log(`Generating ${platform} fingerprint...`);
|
|
16
|
-
const { hash: fingerprint } = await generateFingerprint({
|
|
17
|
-
platform,
|
|
18
|
-
projectRoot,
|
|
19
|
-
debug
|
|
20
|
-
});
|
|
21
|
-
log(`Fingerprint: ${fingerprint}`);
|
|
22
|
-
const cacheKey = createCacheKey({ platform, fingerprint, prefix: cachePrefix });
|
|
23
|
-
log(`Cache key: ${cacheKey}`);
|
|
24
|
-
const cached = loadCache(cacheKey);
|
|
25
|
-
if (cached && cached.fingerprint === fingerprint)
|
|
26
|
-
return log("Cache hit! Skipping build."), {
|
|
27
|
-
cacheHit: !0,
|
|
28
|
-
fingerprint,
|
|
29
|
-
cacheKey,
|
|
30
|
-
outputPaths
|
|
31
|
-
};
|
|
32
|
-
log(`Running build: ${buildCommand}`);
|
|
33
|
-
const execOptions = {
|
|
34
|
-
cwd: projectRoot,
|
|
35
|
-
stdio: debug ? "inherit" : ["pipe", "pipe", "pipe"]
|
|
36
|
-
};
|
|
37
|
-
try {
|
|
38
|
-
execSync(buildCommand, execOptions);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
const err = error;
|
|
41
|
-
throw new Error(`Build failed: ${err.message}${err.stderr ? `
|
|
42
|
-
${err.stderr}` : ""}`);
|
|
43
|
-
}
|
|
44
|
-
return saveCache(cacheKey, {
|
|
45
|
-
fingerprint,
|
|
46
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
47
|
-
platform,
|
|
48
|
-
outputPaths
|
|
49
|
-
}), {
|
|
50
|
-
cacheHit: !1,
|
|
51
|
-
fingerprint,
|
|
52
|
-
cacheKey,
|
|
53
|
-
outputPaths
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function setGitHubOutput(name, value) {
|
|
57
|
-
const outputFile = process.env.GITHUB_OUTPUT;
|
|
58
|
-
outputFile ? appendFileSync(outputFile, `${name}=${value}
|
|
59
|
-
`) : console.info(`[GitHub Output] ${name}=${value}`);
|
|
60
|
-
}
|
|
61
|
-
function isGitHubActions() {
|
|
62
|
-
return !!process.env.GITHUB_ACTIONS;
|
|
63
|
-
}
|
|
64
|
-
function isCI() {
|
|
65
|
-
return !!process.env.CI;
|
|
66
|
-
}
|
|
67
|
-
export {
|
|
68
|
-
isCI,
|
|
69
|
-
isGitHubActions,
|
|
70
|
-
runWithCache,
|
|
71
|
-
setGitHubOutput
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=runner.js.map
|
package/dist/runner.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/runner.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAsC;AAC/C,SAAS,sBAAsB;AAC/B,SAAS,gBAAgB,WAAW,iBAAiB;AACrD,SAAS,2BAA2B;AAwBpC,eAAsB,aACpB,SAC6B;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,QAAQ,IAAI;AAAA,IAC1B,cAAc;AAAA,IACd,QAAQ;AAAA,EACV,IAAI,SAEE,MAAM,QAAQ,QAAQ,MAAM,MAAM;AAAA,EAAC;AAGzC,MAAI,cAAc,QAAQ,iBAAiB;AAC3C,QAAM,EAAE,MAAM,YAAY,IAAI,MAAM,oBAAoB;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,MAAI,gBAAgB,WAAW,EAAE;AAGjC,QAAM,WAAW,eAAe,EAAE,UAAU,aAAa,QAAQ,YAAY,CAAC;AAC9E,MAAI,cAAc,QAAQ,EAAE;AAE5B,QAAM,SAAS,UAAsD,QAAQ;AAE7E,MAAI,UAAU,OAAO,gBAAgB;AACnC,eAAI,4BAA4B,GACzB;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAIF,MAAI,kBAAkB,YAAY,EAAE;AACpC,QAAM,cAA+B;AAAA,IACnC,KAAK;AAAA,IACL,OAAO,QAAQ,YAAY,CAAC,QAAQ,QAAQ,MAAM;AAAA,EACpD;AAEA,MAAI;AACF,aAAS,cAAc,WAAW;AAAA,EACpC,SAAS,OAAO;AACd,UAAM,MAAM;AACZ,UAAM,IAAI,MAAM,iBAAiB,IAAI,OAAO,GAAG,IAAI,SAAS;AAAA,EAAK,IAAI,MAAM,KAAK,EAAE,EAAE;AAAA,EACtF;AAGA,mBAAU,UAAU;AAAA,IAClB;AAAA,IACA,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC;AAAA,IACA;AAAA,EACF,CAAC,GAEM;AAAA,IACL,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,gBAAgB,MAAc,OAAqB;AACjE,QAAM,aAAa,QAAQ,IAAI;AAC/B,EAAI,aACF,eAAe,YAAY,GAAG,IAAI,IAAI,KAAK;AAAA,CAAI,IAG/C,QAAQ,KAAK,mBAAmB,IAAI,IAAI,KAAK,EAAE;AAEnD;AAKO,SAAS,kBAA2B;AACzC,SAAO,CAAC,CAAC,QAAQ,IAAI;AACvB;AAKO,SAAS,OAAgB;AAC9B,SAAO,CAAC,CAAC,QAAQ,IAAI;AACvB;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|