stim 1.13.0 → 1.15.0
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 +2 -0
- package/dist/{activity-DfVKZTEB.mjs → activity-B2-kb7k0.mjs} +281 -41
- package/dist/{android-BHfAu2mf.mjs → android-CYmq0jNi.mjs} +2 -2
- package/dist/{android-CD8pr8Q2.mjs → android-Cu_L4RpL.mjs} +524 -412
- package/dist/{android-qx_31wJo.mjs → android-Db2eEMaf.mjs} +152 -65
- package/dist/android-cas-PnKfAdB2.mjs +167 -0
- package/dist/android-cas-compiler.mjs +2 -2
- package/dist/{app-install-CDFY2nUL.mjs → app-install-CAAplXAt.mjs} +162 -173
- package/dist/{budget-E5o91NR1.mjs → budget-CMiqghig.mjs} +1048 -77
- package/dist/{build-plan-BTa93o_r.mjs → build-plan-aeGMFX7e.mjs} +193 -650
- package/dist/build-progress-C2Jv1AtA.mjs +872 -0
- package/dist/build-slots-Df1ApSuH.mjs +127 -0
- package/dist/{cache-manifest-DWPF4RKJ.mjs → cache-manifest-DnUHBJaU.mjs} +2 -2
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{chrome-B5hWgQJS.mjs → chrome-BrcVWQyD.mjs} +4 -4
- package/dist/cli-0cX5s4NM.mjs +45 -0
- package/dist/cli.mjs +6 -42
- package/dist/client-C2IS36Qf.mjs +1333 -0
- package/dist/collector-run.mjs +8 -7
- package/dist/{command-output-BIL7rlX7.mjs → command-output-CliHHn7a.mjs} +1 -1
- package/dist/{config-0jCcMM0E.mjs → config-D0DbpZtM.mjs} +29 -29
- package/dist/{created-devices-Cd558h31.mjs → created-devices-BwVb3liH.mjs} +2 -2
- package/dist/{dependency-state-DNN0yfx6.mjs → dependency-state-BmsjKZ2H.mjs} +2 -2
- package/dist/{deps-2Wo81np9.mjs → deps-BFlKbOIp.mjs} +3 -3
- package/dist/{detached-entry-DJHoca49.mjs → detached-entry-CiTEgMR1.mjs} +1 -1
- package/dist/dev-client-CjzLoNs0.mjs +80 -0
- package/dist/{device-Cf7vl-so.mjs → device-BZ1IyS5A.mjs} +7 -7
- package/dist/device-capacity-DMuKC7nx.mjs +136 -0
- package/dist/device-host-worker.d.mts +1 -0
- package/dist/device-host-worker.mjs +769 -0
- package/dist/device-ios-DMQBUPus.mjs +381 -0
- package/dist/{device-lease-CL9dZf73.mjs → device-lease-W5Pi1q38.mjs} +43 -36
- package/dist/{device-pool-MuoiyRcu.mjs → device-pool-B2r38YjS.mjs} +4 -4
- package/dist/{device-remote-DT9ngZiD.mjs → device-remote-9ulPsdhY.mjs} +68 -162
- package/dist/{doctor-D2iysNNH.mjs → doctor-BcE5xsBn.mjs} +191 -99
- package/dist/{error-diagnostics-BoiOhck8.mjs → error-diagnostics-Cb0P1WLS.mjs} +12 -11
- package/dist/{exec-DK8KaVHK.mjs → exec-CaErVv7t.mjs} +5 -1
- package/dist/{gc-eA-PRBX8.mjs → gc-BuL1Genr.mjs} +430 -102
- package/dist/{android-cas-B9Kv9aIy.mjs → gradle-CmdOBq1d.mjs} +8 -294
- package/dist/{guide-BfZ0OmiP.mjs → guide-cCSGRFd3.mjs} +2052 -240
- package/dist/{guide-status-BaMYu55M.mjs → guide-status-CIoWK6mG.mjs} +3 -3
- package/dist/hosted-macos-DwowNU7W.mjs +447 -0
- package/dist/idle-shutdown-B5LPaNyY.mjs +122 -0
- package/dist/in-use-CndPMilN.mjs +110 -0
- package/dist/{ios-CmEzZiOj.mjs → ios-3CtCRhwr.mjs} +201 -10
- package/dist/{ios-CcfCeZ19.mjs → ios-Chob8ny7.mjs} +560 -259
- package/dist/{ios-device-BW-t_Lkv.mjs → ios-device-DERmMmk-.mjs} +12 -7
- package/dist/{ios-device-BiOsSVzd.mjs → ios-device-Ee7sDXfp.mjs} +1 -1
- package/dist/{launch-verify-CuJaBpEa.mjs → launch-verify-CLlofxRt.mjs} +42 -11
- package/dist/{logs-DcSRbC2t.mjs → logs-h9h6MUvE.mjs} +95 -13
- package/dist/machine-usage-D_YYMzfR.mjs +283 -0
- package/dist/machines-CYtOCqcj.mjs +259 -0
- package/dist/macos-BwtbUtTN.mjs +468 -0
- package/dist/macos-run.d.mts +5 -0
- package/dist/macos-run.mjs +2 -0
- package/dist/{merge-state-ytFQCeh4.mjs → merge-state-BnxLNQiM.mjs} +22 -12
- package/dist/{metro-BPeY1YMh.mjs → metro-Di8EN2Tb.mjs} +20 -120
- package/dist/{named-ports-n7tnJsI8.mjs → named-ports-Dj_XBNaL.mjs} +8 -64
- package/dist/native-run-DFDoIRbY.mjs +147 -0
- package/dist/{native-runtime-CiiFHt0e.mjs → native-runtime-i6OkVg-w.mjs} +11 -6
- package/dist/offload-worker.d.mts +121 -0
- package/dist/offload-worker.mjs +601 -0
- package/dist/{ownership-Bz2kETAS.mjs → ownership-BkYxUtuj.mjs} +3 -2
- package/dist/{page-BTu7I60K.mjs → page-QF_Ke10s.mjs} +7 -2
- package/dist/{ports-C5UutqpJ.mjs → ports-DddwttKM.mjs} +3 -3
- package/dist/prebuild-BvxDlD6C.mjs +213 -0
- package/dist/process-identity-BmRm1qV0.mjs +12 -0
- package/dist/{project-DGeclhvO.mjs → project-CV3tDFHl.mjs} +9 -18
- package/dist/pull-request-pxnDCQzn.mjs +322 -0
- package/dist/pull-requests.d.mts +120 -0
- package/dist/pull-requests.mjs +2 -0
- package/dist/recordings-GEXp4iBT.mjs +37 -0
- package/dist/{reload-C-cV5yy_.mjs → reload-ChPiwvot.mjs} +70 -22
- package/dist/{remote-cache--aehr4Pr.mjs → remote-cache-CO2elm_b.mjs} +4 -4
- package/dist/run-B-xqRrsg.mjs +119 -0
- package/dist/{server-bare-Bq8BpSIo.mjs → server-bare-X7PUgizL.mjs} +60 -13
- package/dist/{server-expo-DUCg52-K.mjs → server-expo-DhtX6bom.mjs} +6 -10
- package/dist/server-expo-KJeD109I.mjs +2 -0
- package/dist/{settings-xB0Frkg6.mjs → settings-CduVcoxj.mjs} +77 -26
- package/dist/{settings-ssVBToDR.mjs → settings-DbL6uhH8.mjs} +16 -10
- package/dist/settings.schema.json +357 -2
- package/dist/{simslim-Bbg9UWrt.mjs → simslim-Ciluxlq4.mjs} +8 -132
- package/dist/slot-launch-BY0BrOLh.mjs +65 -0
- package/dist/{spawn-claims-PT8aQpCa.mjs → spawn-claims-D0XfSe8u.mjs} +1 -1
- package/dist/spawn-entry-DncpJvWL.mjs +16 -0
- package/dist/stage-CzaiwFsI.mjs +143 -0
- package/dist/start-CPO4wRg7.mjs +2 -0
- package/dist/{start-BZhItkiL.mjs → start-CUD9nasA.mjs} +108 -61
- package/dist/state-B4PQFXMW.d.mts +12 -0
- package/dist/state-BxCgeTQu.mjs +41 -0
- package/dist/{state-DwAU2_-D.mjs → state-CaeaHbDA.mjs} +7 -4
- package/dist/{state-l1pYwOre.mjs → state-DFm77wRn.mjs} +67 -5
- package/dist/stats-DBLLFmKd.mjs +66 -0
- package/dist/{status-TJlL0HWo.mjs → status-DYXxNOT0.mjs} +425 -260
- package/dist/{status-sszP4XKU.mjs → status-l84Gbvp2.mjs} +122 -20
- package/dist/stdout-reader-C8yjre1x.mjs +23 -0
- package/dist/stim-desktop-Cnz8CPnl.mjs +63 -0
- package/dist/stim-footprint.swift +32 -0
- package/dist/{stim-installations-CINXy_su.mjs → stim-installations-QMEI32v1.mjs} +1 -1
- package/dist/{stop-BZ2qMiBP.mjs → stop-Bad61z_2.mjs} +128 -19
- package/dist/stop-Bvf1MflS.mjs +48 -0
- package/dist/{stop-DskDKNTU.mjs → stop-CceYh1yG.mjs} +2 -2
- package/dist/stop-cause-CZ_Mr-v9.mjs +665 -0
- package/dist/supervisor-run.d.mts +44 -12
- package/dist/supervisor-run.mjs +276 -33
- package/dist/support-CDQbDkL5.mjs +315 -0
- package/dist/support-WLOzVKUv.mjs +176 -0
- package/dist/teardown-BYuQafiA.mjs +718 -0
- package/dist/{xcode-LM6A8cNZ.mjs → toolchain-DmeYjXD9.mjs} +363 -13
- package/dist/warm-progress-DVHLN4uC.mjs +463 -0
- package/dist/{idle-DxLi5OkN.mjs → watchman-Bx0wceoF.mjs} +55 -8
- package/dist/{web-sWXd5iek.mjs → web-k6w8-HnE.mjs} +39 -22
- package/dist/web-run.mjs +326 -13
- package/dist/workspace-process-lock-BL7Q0HCO.mjs +57 -0
- package/dist/workspace-state-CL2V2Ons.mjs +371 -0
- package/dist/worktree-BT_uULFx.mjs +2 -0
- package/dist/{worktree-DeBQSVtR.mjs → worktree-C0c5Udwa.mjs} +55 -54
- package/dist/{worktree-D4Do_XiQ.mjs → worktree-qXKzADSC.mjs} +161 -255
- package/package.json +10 -5
- package/shim/bundle-response.cjs +55 -10
- package/shim/bundle-response.d.cts +1 -0
- package/shim/expo-metro-config.cjs +10 -2
- package/dist/build-progress-l7d-X-ZP.mjs +0 -247
- package/dist/in-use-wYEaKQM9.mjs +0 -249
- package/dist/ownership-PUP4Dwai.mjs +0 -1138
- package/dist/server-expo-BeYwP_Xy.mjs +0 -2
- package/dist/slot-launch-BIWEW-wI.mjs +0 -19
- package/dist/start-Rw2GD3nV.mjs +0 -2
- package/dist/stats-CaSwmsSZ.mjs +0 -62
- package/dist/stats-D8rUTPHd.mjs +0 -368
- package/dist/stim-desktop-CXt8-Z3J.mjs +0 -40
- package/dist/worktree-3cBa-bQt.mjs +0 -2
- package/dist/{metro-store-DzeWkfqW.mjs → metro-store-CDDZHtPl.mjs} +1 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { t as getExecutor } from "./exec-CaErVv7t.mjs";
|
|
2
|
+
import { _ as loadConfig, d as getConfigDir } from "./config-D0DbpZtM.mjs";
|
|
3
3
|
import { accessSync, chmodSync, constants, lstatSync, mkdirSync, mkdtempSync, readdirSync, realpathSync, rmSync, statSync } from "node:fs";
|
|
4
|
+
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
4
5
|
import { chmodSync as chmodSync$1, existsSync as existsSync$1, lstatSync as lstatSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, statSync as statSync$1, utimesSync } from "fs";
|
|
5
|
-
import { dirname, isAbsolute, join, relative, resolve, sep } from "path";
|
|
6
|
+
import { dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "path";
|
|
6
7
|
import { buildCacheRoot } from "@stim-cli/core";
|
|
7
|
-
import { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "node:path";
|
|
8
8
|
import { tmpdir } from "node:os";
|
|
9
9
|
//#region src/temporary.ts
|
|
10
10
|
function existingPath(path) {
|
|
11
11
|
const missing = [];
|
|
12
|
-
let current = resolve
|
|
12
|
+
let current = resolve(path);
|
|
13
13
|
while (!lstatSync(current, { throwIfNoEntry: false })) {
|
|
14
|
-
missing.unshift(basename
|
|
15
|
-
current = dirname
|
|
14
|
+
missing.unshift(basename(current));
|
|
15
|
+
current = dirname(current);
|
|
16
16
|
}
|
|
17
17
|
const existing = realpathSync(current);
|
|
18
18
|
return {
|
|
19
19
|
existing,
|
|
20
|
-
resolved: join
|
|
20
|
+
resolved: join(existing, ...missing)
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
function filesystemDevice(path) {
|
|
@@ -26,22 +26,22 @@ function filesystemDevice(path) {
|
|
|
26
26
|
function outsideWorkingTree(path) {
|
|
27
27
|
let current = path;
|
|
28
28
|
while (true) {
|
|
29
|
-
if (lstatSync(join
|
|
30
|
-
const parent = dirname
|
|
29
|
+
if (lstatSync(join(current, ".git"), { throwIfNoEntry: false })) return false;
|
|
30
|
+
const parent = dirname(current);
|
|
31
31
|
if (parent === current) return true;
|
|
32
32
|
current = parent;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
function inside(parent, path) {
|
|
36
|
-
const rel = relative
|
|
37
|
-
return rel === "" || rel !== ".." && !rel.startsWith(`..${sep
|
|
36
|
+
const rel = relative(parent, path);
|
|
37
|
+
return rel === "" || rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);
|
|
38
38
|
}
|
|
39
39
|
function temporaryRoot(near) {
|
|
40
40
|
const reference = existingPath(near);
|
|
41
41
|
const insideReference = (path) => inside(reference.resolved, path);
|
|
42
42
|
const override = process.env.STIM_TMPDIR ?? loadConfig()?.tempDir;
|
|
43
43
|
if (override !== void 0) {
|
|
44
|
-
if (typeof override !== "string" || !isAbsolute
|
|
44
|
+
if (typeof override !== "string" || !isAbsolute(override)) throw new Error("STIM_TMPDIR / tempDir must be an absolute directory path.");
|
|
45
45
|
const { existing, resolved } = existingPath(override);
|
|
46
46
|
if (!statSync(existing).isDirectory() || !outsideWorkingTree(existing)) throw new Error(`Temporary directory ${override} must be outside Git working trees.`);
|
|
47
47
|
if (insideReference(resolved)) throw new Error(`Temporary directory ${override} must not be inside ${near}.`);
|
|
@@ -52,10 +52,10 @@ function temporaryRoot(near) {
|
|
|
52
52
|
const cache = existingPath(buildCacheRoot()).resolved;
|
|
53
53
|
const device = statSync(existing).dev;
|
|
54
54
|
const candidates = [tmpdir()];
|
|
55
|
-
let current = existing === reference.resolved || !statSync(existing).isDirectory() ? dirname
|
|
55
|
+
let current = existing === reference.resolved || !statSync(existing).isDirectory() ? dirname(existing) : existing;
|
|
56
56
|
while (statSync(current).dev === device) {
|
|
57
57
|
candidates.push(current);
|
|
58
|
-
const parent = dirname
|
|
58
|
+
const parent = dirname(current);
|
|
59
59
|
if (parent === current) break;
|
|
60
60
|
current = parent;
|
|
61
61
|
}
|
|
@@ -65,7 +65,7 @@ function temporaryRoot(near) {
|
|
|
65
65
|
accessSync(path, constants.W_OK);
|
|
66
66
|
return path;
|
|
67
67
|
} catch {}
|
|
68
|
-
throw new Error(`No writable temporary directory on the filesystem containing ${near}. Set STIM_TMPDIR or tempDir in ${join
|
|
68
|
+
throw new Error(`No writable temporary directory on the filesystem containing ${near}. Set STIM_TMPDIR or tempDir in ${join(getConfigDir(), "config.json")} to a directory outside Git working trees.`);
|
|
69
69
|
}
|
|
70
70
|
function makeTemporaryDirectory(near, prefix) {
|
|
71
71
|
const root = temporaryRoot(near);
|
|
@@ -73,13 +73,13 @@ function makeTemporaryDirectory(near, prefix) {
|
|
|
73
73
|
recursive: true,
|
|
74
74
|
mode: 448
|
|
75
75
|
});
|
|
76
|
-
return mkdtempSync(join
|
|
76
|
+
return mkdtempSync(join(root, prefix));
|
|
77
77
|
}
|
|
78
78
|
function removeTemporaryEntry(path) {
|
|
79
79
|
const stat = lstatSync(path, { throwIfNoEntry: false });
|
|
80
80
|
if (stat?.isDirectory()) {
|
|
81
81
|
chmodSync(path, stat.mode | 448);
|
|
82
|
-
for (const entry of readdirSync(path, { withFileTypes: true })) if (entry.isDirectory()) removeTemporaryEntry(join
|
|
82
|
+
for (const entry of readdirSync(path, { withFileTypes: true })) if (entry.isDirectory()) removeTemporaryEntry(join(path, entry.name));
|
|
83
83
|
}
|
|
84
84
|
rmSync(path, {
|
|
85
85
|
recursive: true,
|
|
@@ -91,13 +91,14 @@ function removeTemporaryEntry(path) {
|
|
|
91
91
|
const CARRY_SKIP_BASENAMES = /* @__PURE__ */ new Set([
|
|
92
92
|
".DerivedData",
|
|
93
93
|
".DS_Store",
|
|
94
|
-
".idea"
|
|
94
|
+
".idea",
|
|
95
|
+
".jj"
|
|
95
96
|
]);
|
|
96
97
|
function isCarrySkipped(rel) {
|
|
97
98
|
return /(^|\/)android\/build\/generated\/autolinking(\/|$)/.test(rel) || String(rel).split("/").some((seg) => CARRY_SKIP_BASENAMES.has(seg));
|
|
98
99
|
}
|
|
99
100
|
function nativePath(path) {
|
|
100
|
-
return sep === "/" ? path : path.replaceAll("/", sep);
|
|
101
|
+
return sep$1 === "/" ? path : path.replaceAll("/", sep$1);
|
|
101
102
|
}
|
|
102
103
|
function gitCommonDir(cwd) {
|
|
103
104
|
const out = getExecutor().runFileQuiet("git", [
|
|
@@ -176,7 +177,7 @@ function matchesInclude(path, patterns) {
|
|
|
176
177
|
return false;
|
|
177
178
|
}
|
|
178
179
|
function readWorktreeExclude(root) {
|
|
179
|
-
return readPatternFile(join(root, ".worktreeexclude"));
|
|
180
|
+
return readPatternFile(join$1(root, ".worktreeexclude"));
|
|
180
181
|
}
|
|
181
182
|
function readPatternFile(p) {
|
|
182
183
|
if (!existsSync$1(p)) return null;
|
|
@@ -186,7 +187,7 @@ function canonicalPath(path) {
|
|
|
186
187
|
try {
|
|
187
188
|
return realpathSync$1(path);
|
|
188
189
|
} catch {
|
|
189
|
-
return resolve(path);
|
|
190
|
+
return resolve$1(path);
|
|
190
191
|
}
|
|
191
192
|
}
|
|
192
193
|
function nestedWorktreePaths(root) {
|
|
@@ -201,9 +202,9 @@ function nestedWorktreePaths(root) {
|
|
|
201
202
|
]);
|
|
202
203
|
if (out === null) throw new Error("Could not list Git worktrees. Refusing to carry ignored files.");
|
|
203
204
|
for (const entry of parseWorktrees(out)) {
|
|
204
|
-
const rel = relative(source, canonicalPath(entry.path));
|
|
205
|
-
if (!rel || rel === ".." || rel.startsWith(`..${sep}`) || isAbsolute(rel)) continue;
|
|
206
|
-
paths.add(rel.split(sep).join("/"));
|
|
205
|
+
const rel = relative$1(source, canonicalPath(entry.path));
|
|
206
|
+
if (!rel || rel === ".." || rel.startsWith(`..${sep$1}`) || isAbsolute$1(rel)) continue;
|
|
207
|
+
paths.add(rel.split(sep$1).join("/"));
|
|
207
208
|
}
|
|
208
209
|
return [...paths];
|
|
209
210
|
}
|
|
@@ -263,11 +264,11 @@ function missingDestinationReason(target, rel) {
|
|
|
263
264
|
const parts = rel.split("/");
|
|
264
265
|
for (let i = 1; i < parts.length; i++) {
|
|
265
266
|
const parent = parts.slice(0, i).join("/");
|
|
266
|
-
const stat = lstatSync$1(join(target, parent), { throwIfNoEntry: false });
|
|
267
|
+
const stat = lstatSync$1(join$1(target, parent), { throwIfNoEntry: false });
|
|
267
268
|
if (stat?.isSymbolicLink()) return `symlink ancestor: ${parent}`;
|
|
268
269
|
if (stat && !stat.isDirectory()) return `non-directory ancestor: ${parent}`;
|
|
269
270
|
}
|
|
270
|
-
return lstatSync$1(join(target, rel), { throwIfNoEntry: false }) ? "exists" : null;
|
|
271
|
+
return lstatSync$1(join$1(target, rel), { throwIfNoEntry: false }) ? "exists" : null;
|
|
271
272
|
}
|
|
272
273
|
function removeCopiedExclusions(path, rel) {
|
|
273
274
|
const entries = readdirSync$1(path, { withFileTypes: true });
|
|
@@ -276,7 +277,7 @@ function removeCopiedExclusions(path, rel) {
|
|
|
276
277
|
const stat = lstatSync$1(path);
|
|
277
278
|
chmodSync$1(path, stat.mode | 448);
|
|
278
279
|
try {
|
|
279
|
-
for (const entry of excluded) removeTemporaryEntry(join(path, entry.name));
|
|
280
|
+
for (const entry of excluded) removeTemporaryEntry(join$1(path, entry.name));
|
|
280
281
|
} finally {
|
|
281
282
|
utimesSync(path, stat.atime, stat.mtime);
|
|
282
283
|
chmodSync$1(path, stat.mode);
|
|
@@ -284,7 +285,7 @@ function removeCopiedExclusions(path, rel) {
|
|
|
284
285
|
}
|
|
285
286
|
for (const entry of entries) {
|
|
286
287
|
const child = `${rel}/${entry.name}`;
|
|
287
|
-
if (entry.isDirectory() && !isCarrySkipped(child)) removeCopiedExclusions(join(path, entry.name), child);
|
|
288
|
+
if (entry.isDirectory() && !isCarrySkipped(child)) removeCopiedExclusions(join$1(path, entry.name), child);
|
|
288
289
|
}
|
|
289
290
|
}
|
|
290
291
|
function cloneIgnoredEntries({ root, target, patterns }) {
|
|
@@ -296,8 +297,8 @@ function cloneIgnoredEntries({ root, target, patterns }) {
|
|
|
296
297
|
if (!guard.known) throw new Error("Could not list the destination's tracked files.");
|
|
297
298
|
const nested = nestedWorktreePaths(target);
|
|
298
299
|
for (const rel of listCarryableIgnoredEntries(root, patterns)) {
|
|
299
|
-
const from = join(root, rel);
|
|
300
|
-
const to = join(target, rel);
|
|
300
|
+
const from = join$1(root, rel);
|
|
301
|
+
const to = join$1(target, rel);
|
|
301
302
|
try {
|
|
302
303
|
const reason = guard.covers(rel) ? "tracked" : overlapsNestedWorktree(rel, nested) ? "nested worktree" : missingDestinationReason(target, rel);
|
|
303
304
|
if (reason) {
|
|
@@ -307,7 +308,7 @@ function cloneIgnoredEntries({ root, target, patterns }) {
|
|
|
307
308
|
});
|
|
308
309
|
continue;
|
|
309
310
|
}
|
|
310
|
-
mkdirSync$1(dirname(to), { recursive: true });
|
|
311
|
+
mkdirSync$1(dirname$1(to), { recursive: true });
|
|
311
312
|
try {
|
|
312
313
|
getExecutor().runFile("cp", [
|
|
313
314
|
"-Rc",
|
|
@@ -344,8 +345,8 @@ function podsOutOfSync(target, copiedEntries, { read = readFileSync$1 } = {}) {
|
|
|
344
345
|
for (const rel of copiedEntries || []) {
|
|
345
346
|
if (rel !== "Pods" && !rel.endsWith("/Pods")) continue;
|
|
346
347
|
const iosDir = rel === "Pods" ? "" : rel.slice(0, -5);
|
|
347
|
-
const manifest = join(target, rel, "Manifest.lock");
|
|
348
|
-
const podfileLock = join(target, iosDir, "Podfile.lock");
|
|
348
|
+
const manifest = join$1(target, rel, "Manifest.lock");
|
|
349
|
+
const podfileLock = join$1(target, iosDir, "Podfile.lock");
|
|
349
350
|
if (!existsSync$1(manifest)) continue;
|
|
350
351
|
if (!existsSync$1(podfileLock)) {
|
|
351
352
|
problems.push({
|
|
@@ -405,7 +406,7 @@ function yarnBerryInstallMatches(lockfile, state) {
|
|
|
405
406
|
function installedMatchesLockfile(dir, lockfile, { read = readFileSync$1 } = {}) {
|
|
406
407
|
const text = (rel) => {
|
|
407
408
|
try {
|
|
408
|
-
return read(join(dir, rel), "utf-8").replaceAll("\r\n", "\n");
|
|
409
|
+
return read(join$1(dir, rel), "utf-8").replaceAll("\r\n", "\n");
|
|
409
410
|
} catch {
|
|
410
411
|
return null;
|
|
411
412
|
}
|
|
@@ -437,9 +438,9 @@ function depsOutOfSync(root, target, copiedEntries, { read = readFileSync$1 } =
|
|
|
437
438
|
for (const rel of copiedEntries || []) {
|
|
438
439
|
if (rel !== "node_modules" && !rel.endsWith("/node_modules")) continue;
|
|
439
440
|
const dir = rel === "node_modules" ? "" : rel.slice(0, -13);
|
|
440
|
-
const name = LOCKFILE_NAMES.find((candidate) => existsSync$1(join(target, dir, candidate)));
|
|
441
|
+
const name = LOCKFILE_NAMES.find((candidate) => existsSync$1(join$1(target, dir, candidate)));
|
|
441
442
|
if (!name) continue;
|
|
442
|
-
const installed = installedMatchesLockfile(join(target, dir), name, { read });
|
|
443
|
+
const installed = installedMatchesLockfile(join$1(target, dir), name, { read });
|
|
443
444
|
if (installed === false) {
|
|
444
445
|
problems.push({
|
|
445
446
|
dir: dir || ".",
|
|
@@ -448,10 +449,10 @@ function depsOutOfSync(root, target, copiedEntries, { read = readFileSync$1 } =
|
|
|
448
449
|
});
|
|
449
450
|
continue;
|
|
450
451
|
}
|
|
451
|
-
const source = join(root, dir, name);
|
|
452
|
+
const source = join$1(root, dir, name);
|
|
452
453
|
if (installed === true || !existsSync$1(source)) continue;
|
|
453
454
|
try {
|
|
454
|
-
if (read(source, "utf-8") !== read(join(target, dir, name), "utf-8")) problems.push({
|
|
455
|
+
if (read(source, "utf-8") !== read(join$1(target, dir, name), "utf-8")) problems.push({
|
|
455
456
|
dir: dir || ".",
|
|
456
457
|
lockfile: name,
|
|
457
458
|
reason: "lockfile"
|
|
@@ -634,14 +635,14 @@ function hasPopulatedSubmodules(worktree) {
|
|
|
634
635
|
"--git-path",
|
|
635
636
|
"modules"
|
|
636
637
|
]);
|
|
637
|
-
if (modules && existsSync$1(resolve(worktree, nativePath(modules)))) return true;
|
|
638
|
+
if (modules && existsSync$1(resolve$1(worktree, nativePath(modules)))) return true;
|
|
638
639
|
return (getExecutor().runFileQuiet("git", [
|
|
639
640
|
"-C",
|
|
640
641
|
worktree,
|
|
641
642
|
"ls-files",
|
|
642
643
|
"--stage",
|
|
643
644
|
"-z"
|
|
644
|
-
]) ?? "").split("\0").some((line) => line.startsWith("160000 ") && existsSync$1(join(worktree, line.slice(line.indexOf(" ") + 1), ".git")));
|
|
645
|
+
]) ?? "").split("\0").some((line) => line.startsWith("160000 ") && existsSync$1(join$1(worktree, line.slice(line.indexOf(" ") + 1), ".git")));
|
|
645
646
|
}
|
|
646
647
|
function listWorktrees(cwd) {
|
|
647
648
|
const out = getExecutor().runFileQuiet("git", [
|
|
@@ -662,21 +663,21 @@ function branchOf(head) {
|
|
|
662
663
|
* names (the main checkout's branch, or a bare repository's source checkout) is left out.
|
|
663
664
|
*/
|
|
664
665
|
function linkedWorktreesOnDisk(commonDir) {
|
|
665
|
-
const admin = join(commonDir, "worktrees");
|
|
666
|
+
const admin = join$1(commonDir, "worktrees");
|
|
666
667
|
let ids;
|
|
667
668
|
let sourceBranch;
|
|
668
669
|
try {
|
|
669
670
|
ids = readdirSync$1(admin);
|
|
670
|
-
sourceBranch = branchOf(readFileSync$1(join(commonDir, "HEAD"), "utf-8").trim());
|
|
671
|
+
sourceBranch = branchOf(readFileSync$1(join$1(commonDir, "HEAD"), "utf-8").trim());
|
|
671
672
|
} catch {
|
|
672
673
|
return [];
|
|
673
674
|
}
|
|
674
675
|
return ids.flatMap((id) => {
|
|
675
676
|
try {
|
|
676
|
-
const gitdir = readFileSync$1(join(admin, id, "gitdir"), "utf-8").trim();
|
|
677
|
-
const branch = branchOf(readFileSync$1(join(admin, id, "HEAD"), "utf-8").trim());
|
|
677
|
+
const gitdir = readFileSync$1(join$1(admin, id, "gitdir"), "utf-8").trim();
|
|
678
|
+
const branch = branchOf(readFileSync$1(join$1(admin, id, "HEAD"), "utf-8").trim());
|
|
678
679
|
if (branch && branch === sourceBranch) return [];
|
|
679
|
-
const path = dirname(resolve(admin, id, nativePath(gitdir)));
|
|
680
|
+
const path = dirname$1(resolve$1(admin, id, nativePath(gitdir)));
|
|
680
681
|
return [branch ? {
|
|
681
682
|
path,
|
|
682
683
|
branch
|
|
@@ -692,17 +693,17 @@ function linkedWorktreesOnDisk(commonDir) {
|
|
|
692
693
|
*/
|
|
693
694
|
function gitCommonDirOnDisk(start) {
|
|
694
695
|
try {
|
|
695
|
-
for (let dir = realpathSync$1.native(start);; dir = dirname(dir)) {
|
|
696
|
-
const dotGit = join(dir, ".git");
|
|
696
|
+
for (let dir = realpathSync$1.native(start);; dir = dirname$1(dir)) {
|
|
697
|
+
const dotGit = join$1(dir, ".git");
|
|
697
698
|
if (existsSync$1(dotGit)) {
|
|
698
699
|
if (statSync$1(dotGit).isDirectory()) return realpathSync$1.native(dotGit);
|
|
699
700
|
const gitdir = /^gitdir: (.+)$/m.exec(readFileSync$1(dotGit, "utf-8"))?.[1]?.trim();
|
|
700
701
|
if (!gitdir) return null;
|
|
701
|
-
const linked = resolve(dir, gitdir);
|
|
702
|
-
const commondir = join(linked, "commondir");
|
|
703
|
-
return realpathSync$1.native(existsSync$1(commondir) ? resolve(linked, readFileSync$1(commondir, "utf-8").trim()) : linked);
|
|
702
|
+
const linked = resolve$1(dir, gitdir);
|
|
703
|
+
const commondir = join$1(linked, "commondir");
|
|
704
|
+
return realpathSync$1.native(existsSync$1(commondir) ? resolve$1(linked, readFileSync$1(commondir, "utf-8").trim()) : linked);
|
|
704
705
|
}
|
|
705
|
-
if (dirname(dir) === dir) return null;
|
|
706
|
+
if (dirname$1(dir) === dir) return null;
|
|
706
707
|
}
|
|
707
708
|
} catch {
|
|
708
709
|
return null;
|
|
@@ -722,8 +723,8 @@ function selectSourceCheckout(entries, bareHead) {
|
|
|
722
723
|
if (only && matches.length === 1) return { path: only.path };
|
|
723
724
|
if (!only) {
|
|
724
725
|
const stale = entries.find((entry) => entry.prunable && entry.branch === bareHead);
|
|
725
|
-
const beside = checkouts[0] ? dirname(checkouts[0].path) : bare;
|
|
726
|
-
return { refusal: `The bare repository at ${bare} points HEAD at ${bareHead}, but no worktree has ${bareHead} checked out, so Stim has no source checkout to copy from. ${stale ? `Its worktree at ${stale.path} is missing. Recreate it, then retry:\n git -C ${bare} worktree prune\n git -C ${bare} worktree add ${stale.path} ${bareHead}\n` : `Create one, then retry:\n git -C ${bare} worktree add ${join(beside, bareHead)} ${bareHead}\n`}Or point HEAD at a branch that is checked out (${listed}):\n${pointHead}` };
|
|
726
|
+
const beside = checkouts[0] ? dirname$1(checkouts[0].path) : bare;
|
|
727
|
+
return { refusal: `The bare repository at ${bare} points HEAD at ${bareHead}, but no worktree has ${bareHead} checked out, so Stim has no source checkout to copy from. ${stale ? `Its worktree at ${stale.path} is missing. Recreate it, then retry:\n git -C ${bare} worktree prune\n git -C ${bare} worktree add ${stale.path} ${bareHead}\n` : `Create one, then retry:\n git -C ${bare} worktree add ${join$1(beside, bareHead)} ${bareHead}\n`}Or point HEAD at a branch that is checked out (${listed}):\n${pointHead}` };
|
|
727
728
|
}
|
|
728
729
|
return { refusal: `The bare repository at ${bare} points HEAD at ${bareHead}, which is checked out in more than one worktree: ${matches.map((entry) => entry.path).join(", ")}. Remove the extra worktrees, or point HEAD at a branch checked out once, then retry:\n${pointHead}` };
|
|
729
730
|
}
|