lim 0.14.4 → 0.14.6
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/base-command.d.ts +3 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +18 -4
- package/dist/base-command.js.map +1 -1
- package/dist/commands/android/connect.d.ts +1 -0
- package/dist/commands/android/connect.d.ts.map +1 -1
- package/dist/commands/android/create.d.ts +1 -0
- package/dist/commands/android/create.d.ts.map +1 -1
- package/dist/commands/android/delete.d.ts +1 -0
- package/dist/commands/android/delete.d.ts.map +1 -1
- package/dist/commands/android/element-tree.d.ts +1 -0
- package/dist/commands/android/element-tree.d.ts.map +1 -1
- package/dist/commands/android/find-element.d.ts +1 -0
- package/dist/commands/android/find-element.d.ts.map +1 -1
- package/dist/commands/android/get.d.ts +1 -0
- package/dist/commands/android/get.d.ts.map +1 -1
- package/dist/commands/android/install-app.d.ts +1 -0
- package/dist/commands/android/install-app.d.ts.map +1 -1
- package/dist/commands/android/list.d.ts +1 -0
- package/dist/commands/android/list.d.ts.map +1 -1
- package/dist/commands/android/open-url.d.ts +1 -0
- package/dist/commands/android/open-url.d.ts.map +1 -1
- package/dist/commands/android/press-key.d.ts +1 -0
- package/dist/commands/android/press-key.d.ts.map +1 -1
- package/dist/commands/android/record.d.ts +1 -0
- package/dist/commands/android/record.d.ts.map +1 -1
- package/dist/commands/android/screenshot.d.ts +1 -0
- package/dist/commands/android/screenshot.d.ts.map +1 -1
- package/dist/commands/android/scroll.d.ts +1 -0
- package/dist/commands/android/scroll.d.ts.map +1 -1
- package/dist/commands/android/set-wifi-bandwidth.d.ts +1 -0
- package/dist/commands/android/set-wifi-bandwidth.d.ts.map +1 -1
- package/dist/commands/android/tap-element.d.ts +1 -0
- package/dist/commands/android/tap-element.d.ts.map +1 -1
- package/dist/commands/android/tap.d.ts +1 -0
- package/dist/commands/android/tap.d.ts.map +1 -1
- package/dist/commands/android/type.d.ts +1 -0
- package/dist/commands/android/type.d.ts.map +1 -1
- package/dist/commands/asset/delete.d.ts +1 -0
- package/dist/commands/asset/delete.d.ts.map +1 -1
- package/dist/commands/asset/list.d.ts +1 -0
- package/dist/commands/asset/list.d.ts.map +1 -1
- package/dist/commands/asset/pull.d.ts +1 -0
- package/dist/commands/asset/pull.d.ts.map +1 -1
- package/dist/commands/asset/push.d.ts +1 -0
- package/dist/commands/asset/push.d.ts.map +1 -1
- package/dist/commands/ios/app-log.d.ts +1 -0
- package/dist/commands/ios/app-log.d.ts.map +1 -1
- package/dist/commands/ios/cp.d.ts +1 -0
- package/dist/commands/ios/cp.d.ts.map +1 -1
- package/dist/commands/ios/create.d.ts +1 -0
- package/dist/commands/ios/create.d.ts.map +1 -1
- package/dist/commands/ios/delete.d.ts +1 -0
- package/dist/commands/ios/delete.d.ts.map +1 -1
- package/dist/commands/ios/element-tree.d.ts +1 -0
- package/dist/commands/ios/element-tree.d.ts.map +1 -1
- package/dist/commands/ios/get.d.ts +1 -0
- package/dist/commands/ios/get.d.ts.map +1 -1
- package/dist/commands/ios/info.d.ts +1 -0
- package/dist/commands/ios/info.d.ts.map +1 -1
- package/dist/commands/ios/install-app.d.ts +1 -0
- package/dist/commands/ios/install-app.d.ts.map +1 -1
- package/dist/commands/ios/launch-app.d.ts +1 -0
- package/dist/commands/ios/launch-app.d.ts.map +1 -1
- package/dist/commands/ios/list-apps.d.ts +1 -0
- package/dist/commands/ios/list-apps.d.ts.map +1 -1
- package/dist/commands/ios/list.d.ts +1 -0
- package/dist/commands/ios/list.d.ts.map +1 -1
- package/dist/commands/ios/lsof.d.ts +1 -0
- package/dist/commands/ios/lsof.d.ts.map +1 -1
- package/dist/commands/ios/open-url.d.ts +1 -0
- package/dist/commands/ios/open-url.d.ts.map +1 -1
- package/dist/commands/ios/perform.d.ts +1 -0
- package/dist/commands/ios/perform.d.ts.map +1 -1
- package/dist/commands/ios/press-key.d.ts +1 -0
- package/dist/commands/ios/press-key.d.ts.map +1 -1
- package/dist/commands/ios/record.d.ts +1 -0
- package/dist/commands/ios/record.d.ts.map +1 -1
- package/dist/commands/ios/reverse.d.ts +1 -0
- package/dist/commands/ios/reverse.d.ts.map +1 -1
- package/dist/commands/ios/screenshot.d.ts +1 -0
- package/dist/commands/ios/screenshot.d.ts.map +1 -1
- package/dist/commands/ios/scroll.d.ts +1 -0
- package/dist/commands/ios/scroll.d.ts.map +1 -1
- package/dist/commands/ios/simctl.d.ts +1 -0
- package/dist/commands/ios/simctl.d.ts.map +1 -1
- package/dist/commands/ios/sync.d.ts +1 -0
- package/dist/commands/ios/sync.d.ts.map +1 -1
- package/dist/commands/ios/syslog.d.ts +1 -0
- package/dist/commands/ios/syslog.d.ts.map +1 -1
- package/dist/commands/ios/tap-element.d.ts +1 -0
- package/dist/commands/ios/tap-element.d.ts.map +1 -1
- package/dist/commands/ios/tap.d.ts +1 -0
- package/dist/commands/ios/tap.d.ts.map +1 -1
- package/dist/commands/ios/terminate-app.d.ts +1 -0
- package/dist/commands/ios/terminate-app.d.ts.map +1 -1
- package/dist/commands/ios/toggle-keyboard.d.ts +1 -0
- package/dist/commands/ios/toggle-keyboard.d.ts.map +1 -1
- package/dist/commands/ios/type.d.ts +1 -0
- package/dist/commands/ios/type.d.ts.map +1 -1
- package/dist/commands/ios/xcodebuild.d.ts +1 -0
- package/dist/commands/ios/xcodebuild.d.ts.map +1 -1
- package/dist/commands/ios/xcrun.d.ts +1 -0
- package/dist/commands/ios/xcrun.d.ts.map +1 -1
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/logout.d.ts +1 -0
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/session/start.d.ts +1 -0
- package/dist/commands/session/start.d.ts.map +1 -1
- package/dist/commands/session/status.d.ts +1 -0
- package/dist/commands/session/status.d.ts.map +1 -1
- package/dist/commands/session/stop.d.ts +1 -0
- package/dist/commands/session/stop.d.ts.map +1 -1
- package/dist/commands/set-workspace-dir.d.ts +15 -0
- package/dist/commands/set-workspace-dir.d.ts.map +1 -0
- package/dist/commands/set-workspace-dir.js +60 -0
- package/dist/commands/set-workspace-dir.js.map +1 -0
- package/dist/commands/xcode/attach-simulator.d.ts +1 -0
- package/dist/commands/xcode/attach-simulator.d.ts.map +1 -1
- package/dist/commands/xcode/create.d.ts +1 -0
- package/dist/commands/xcode/create.d.ts.map +1 -1
- package/dist/commands/xcode/delete.d.ts +1 -0
- package/dist/commands/xcode/delete.d.ts.map +1 -1
- package/dist/commands/xcode/get.d.ts +1 -0
- package/dist/commands/xcode/get.d.ts.map +1 -1
- package/dist/commands/xcode/list.d.ts +1 -0
- package/dist/commands/xcode/list.d.ts.map +1 -1
- package/dist/commands/xcode/rbe/install.d.ts +2 -0
- package/dist/commands/xcode/rbe/install.d.ts.map +1 -1
- package/dist/commands/xcode/rbe/install.js +14 -4
- package/dist/commands/xcode/rbe/install.js.map +1 -1
- package/dist/commands/xcode/rbe.d.ts +5 -0
- package/dist/commands/xcode/rbe.d.ts.map +1 -1
- package/dist/commands/xcode/rbe.js +122 -13
- package/dist/commands/xcode/rbe.js.map +1 -1
- package/dist/commands/xcode/sync.d.ts +1 -0
- package/dist/commands/xcode/sync.d.ts.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +324 -105
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/rbe-bep-watcher.d.ts +41 -0
- package/dist/lib/rbe-bep-watcher.d.ts.map +1 -0
- package/dist/lib/rbe-bep-watcher.js +267 -0
- package/dist/lib/rbe-bep-watcher.js.map +1 -0
- package/dist/lib/rbe-session.d.ts +13 -0
- package/dist/lib/rbe-session.d.ts.map +1 -1
- package/dist/lib/rbe-session.js +15 -0
- package/dist/lib/rbe-session.js.map +1 -1
- package/dist/lib/rbe-workspace.d.ts +14 -1
- package/dist/lib/rbe-workspace.d.ts.map +1 -1
- package/dist/lib/rbe-workspace.js +25 -5
- package/dist/lib/rbe-workspace.js.map +1 -1
- package/dist/lib/scope.d.ts +38 -0
- package/dist/lib/scope.d.ts.map +1 -0
- package/dist/lib/scope.js +125 -0
- package/dist/lib/scope.js.map +1 -0
- package/dist/lib/workspace.d.ts +25 -0
- package/dist/lib/workspace.d.ts.map +1 -0
- package/dist/lib/workspace.js +111 -0
- package/dist/lib/workspace.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startBepWatcher = startBepWatcher;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const api_1 = require("@limrun/api");
|
|
10
|
+
function startBepWatcher(opts) {
|
|
11
|
+
const { bepPath, target, getClient, log, debounceMs = 400, pollIntervalMs = 1500, retryDelayMs = 5000, maxRetries = 3, } = opts;
|
|
12
|
+
const watchDir = path_1.default.dirname(bepPath);
|
|
13
|
+
const bepName = path_1.default.basename(bepPath);
|
|
14
|
+
// Act once per build. We dedupe on the Bazel invocation id (not the digest) so
|
|
15
|
+
// a rebuild that reproduces an earlier digest (git stash revert) still
|
|
16
|
+
// re-registers — the instance, keyed on the CAS digest, then reinstalls only
|
|
17
|
+
// if the on-sim digest actually differs. When a BEP carries no invocation id
|
|
18
|
+
// (older Bazel), we fall back to the digest hash so we still avoid re-acting on
|
|
19
|
+
// the same build's repeated change events.
|
|
20
|
+
let lastHandledInvocation;
|
|
21
|
+
let lastHandledHash;
|
|
22
|
+
let authExpired = false;
|
|
23
|
+
const loggedOnce = new Set();
|
|
24
|
+
let closed = false;
|
|
25
|
+
let dirty = false;
|
|
26
|
+
let currentTick = null;
|
|
27
|
+
// Bounded retry for transient install failures (the mtime/size poll only fires
|
|
28
|
+
// on a file change, so a settled build wouldn't otherwise be retried).
|
|
29
|
+
let retryTimer = null;
|
|
30
|
+
let retryInvocation;
|
|
31
|
+
let retryCount = 0;
|
|
32
|
+
let debounceTimer = null;
|
|
33
|
+
// Seed from the current file (if any) so the first poll doesn't spuriously fire,
|
|
34
|
+
// and so we notice a rewrite by size even when mtime granularity is coarse.
|
|
35
|
+
let lastMtimeMs = -1;
|
|
36
|
+
let lastSize = -1;
|
|
37
|
+
try {
|
|
38
|
+
const st = fs_1.default.statSync(bepPath);
|
|
39
|
+
lastMtimeMs = st.mtimeMs;
|
|
40
|
+
lastSize = st.size;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
/* no BEP yet */
|
|
44
|
+
}
|
|
45
|
+
const logOnce = (key, msg) => {
|
|
46
|
+
if (loggedOnce.has(key))
|
|
47
|
+
return;
|
|
48
|
+
loggedOnce.add(key);
|
|
49
|
+
log(msg);
|
|
50
|
+
};
|
|
51
|
+
const trigger = () => {
|
|
52
|
+
if (closed)
|
|
53
|
+
return;
|
|
54
|
+
if (currentTick) {
|
|
55
|
+
// A tick is in flight; mark dirty so we re-run once it settles.
|
|
56
|
+
dirty = true;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
currentTick = tick()
|
|
60
|
+
.catch((err) => log(`auto-install: unexpected error: ${errMsg(err)}`))
|
|
61
|
+
.finally(() => {
|
|
62
|
+
currentTick = null;
|
|
63
|
+
// A BEP change during the registration (e.g. a new build) set `dirty`;
|
|
64
|
+
// re-run so we converge on the latest on-disk build.
|
|
65
|
+
if (dirty && !closed) {
|
|
66
|
+
dirty = false;
|
|
67
|
+
trigger();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const onChange = () => {
|
|
72
|
+
if (closed)
|
|
73
|
+
return;
|
|
74
|
+
if (debounceTimer)
|
|
75
|
+
clearTimeout(debounceTimer);
|
|
76
|
+
debounceTimer = setTimeout(() => {
|
|
77
|
+
debounceTimer = null;
|
|
78
|
+
trigger();
|
|
79
|
+
}, debounceMs);
|
|
80
|
+
};
|
|
81
|
+
async function tick() {
|
|
82
|
+
if (authExpired)
|
|
83
|
+
return; // a detached daemon cannot relogin; stop trying.
|
|
84
|
+
if (closed)
|
|
85
|
+
return;
|
|
86
|
+
let bep;
|
|
87
|
+
try {
|
|
88
|
+
bep = await fs_1.default.promises.readFile(bepPath, 'utf8');
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return; // file missing/unreadable; a later change re-triggers.
|
|
92
|
+
}
|
|
93
|
+
const completion = (0, api_1.inspectBuildCompletion)(bep);
|
|
94
|
+
if (!completion.complete || !completion.success) {
|
|
95
|
+
// Build still flushing, or it failed: leave prior state untouched. A
|
|
96
|
+
// failed build must not register anything.
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (completion.invocationId && completion.invocationId === lastHandledInvocation) {
|
|
100
|
+
return; // already handled this build.
|
|
101
|
+
}
|
|
102
|
+
// The BEP is fully flushed (gated on the terminal `lastMessage` event), so a
|
|
103
|
+
// parse failure here is definitive, not a not-yet-written race: this build
|
|
104
|
+
// either didn't produce our target or used wrong flags (BLAKE3 / local-only).
|
|
105
|
+
// Either way, mark the build handled so its remaining change events don't
|
|
106
|
+
// reprocess; log the wrong-flags case once.
|
|
107
|
+
let digest;
|
|
108
|
+
try {
|
|
109
|
+
digest = (0, api_1.parseTopLevelIpaDigest)(bep, target);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
if (err instanceof api_1.RbeBepError && err.terminal) {
|
|
113
|
+
logOnce(`terminal:${completion.invocationId ?? 'no-invocation'}`, `auto-install: ${errMsg(err)}`);
|
|
114
|
+
}
|
|
115
|
+
markHandled(completion.invocationId, undefined);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Fall back to the digest for the rare BEP without an invocation id, so the
|
|
119
|
+
// same build's repeated change events don't re-register.
|
|
120
|
+
if (!completion.invocationId && digest.hash === lastHandledHash) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
await register(bep, digest, completion.invocationId);
|
|
124
|
+
}
|
|
125
|
+
function markHandled(invocationId, hash) {
|
|
126
|
+
// Update each dedupe key only when we actually have a value, so a terminal
|
|
127
|
+
// parse failure (which has an invocation id but no digest) doesn't wipe the
|
|
128
|
+
// hash-fallback key used for invocation-less BEP streams.
|
|
129
|
+
if (invocationId !== undefined)
|
|
130
|
+
lastHandledInvocation = invocationId;
|
|
131
|
+
if (hash !== undefined)
|
|
132
|
+
lastHandledHash = hash;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Schedules a re-attempt after a transient install failure (the build is not
|
|
136
|
+
* marked handled, so the re-triggered tick re-reads and retries the same
|
|
137
|
+
* build). Bounded per build: after maxRetries we give up and mark it handled so
|
|
138
|
+
* a permanent failure can't loop forever — the user rebuilds to retry.
|
|
139
|
+
*/
|
|
140
|
+
function scheduleRetry(invocationId, digest) {
|
|
141
|
+
if (closed)
|
|
142
|
+
return;
|
|
143
|
+
if (invocationId !== retryInvocation) {
|
|
144
|
+
retryInvocation = invocationId;
|
|
145
|
+
retryCount = 0;
|
|
146
|
+
}
|
|
147
|
+
if (retryCount >= maxRetries) {
|
|
148
|
+
logOnce(`giveup:${invocationId ?? digest.hash}`, `auto-install: gave up installing ${digest.ipaName} after ${maxRetries} retries; rebuild to retry.`);
|
|
149
|
+
markHandled(invocationId, digest.hash);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
retryCount++;
|
|
153
|
+
if (retryTimer)
|
|
154
|
+
clearTimeout(retryTimer);
|
|
155
|
+
retryTimer = setTimeout(() => {
|
|
156
|
+
retryTimer = null;
|
|
157
|
+
trigger();
|
|
158
|
+
}, retryDelayMs);
|
|
159
|
+
if (typeof retryTimer.unref === 'function')
|
|
160
|
+
retryTimer.unref();
|
|
161
|
+
}
|
|
162
|
+
async function register(bep, digest, invocationId) {
|
|
163
|
+
let result;
|
|
164
|
+
try {
|
|
165
|
+
result = await getClient().installRbeBuildFromBep({ bep, target });
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
if (isAuthError(err)) {
|
|
169
|
+
authExpired = true;
|
|
170
|
+
logOnce('auth', 'auto-install: session expired; restart `lim xcode rbe` to resume auto-install.');
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
// Transient (network/instance blip). The mtime/size poll won't re-fire for
|
|
174
|
+
// a settled build, so schedule a bounded retry rather than dropping it until
|
|
175
|
+
// the next build.
|
|
176
|
+
log(`auto-install: failed to install ${digest.ipaName}: ${errMsg(err)}`);
|
|
177
|
+
scheduleRetry(invocationId, digest);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
// The build is handled — don't retry it on the next change.
|
|
181
|
+
markHandled(invocationId, digest.hash);
|
|
182
|
+
if (result.installed) {
|
|
183
|
+
const timing = result.syncDurationMs !== undefined ?
|
|
184
|
+
` (synced ${result.syncDurationMs}ms, installed ${result.installDurationMs ?? 0}ms)`
|
|
185
|
+
: '';
|
|
186
|
+
log(`auto-install: installed ${result.appName ?? digest.ipaName}${timing}`);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
log(`auto-install: recorded ${digest.ipaName}; will install when a simulator is attached.`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// fs.watch on the directory (Bazel truncates+rewrites bep.json, changing the
|
|
193
|
+
// inode, so watching the file path directly is unreliable). Filter to bep.json.
|
|
194
|
+
let watcher = null;
|
|
195
|
+
try {
|
|
196
|
+
watcher = fs_1.default.watch(watchDir, (_event, filename) => {
|
|
197
|
+
if (!filename || path_1.default.basename(filename.toString()) === bepName)
|
|
198
|
+
onChange();
|
|
199
|
+
});
|
|
200
|
+
watcher.on('error', (err) => log(`auto-install: watch error: ${errMsg(err)}`));
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
log(`auto-install: could not watch ${watchDir}: ${errMsg(err)}`);
|
|
204
|
+
}
|
|
205
|
+
// mtime-poll backstop: macOS FSEvents can coalesce or drop the single
|
|
206
|
+
// completion event, so also poll the BEP's mtime and act on a change.
|
|
207
|
+
const poll = setInterval(() => {
|
|
208
|
+
fs_1.default.promises
|
|
209
|
+
.stat(bepPath)
|
|
210
|
+
.then((st) => {
|
|
211
|
+
// Compare size too: a fast cached rebuild's truncate+rewrite can land
|
|
212
|
+
// within one mtime tick on coarse-granularity filesystems.
|
|
213
|
+
if (st.mtimeMs !== lastMtimeMs || st.size !== lastSize) {
|
|
214
|
+
lastMtimeMs = st.mtimeMs;
|
|
215
|
+
lastSize = st.size;
|
|
216
|
+
onChange();
|
|
217
|
+
}
|
|
218
|
+
})
|
|
219
|
+
.catch(() => {
|
|
220
|
+
/* no BEP yet */
|
|
221
|
+
});
|
|
222
|
+
}, pollIntervalMs);
|
|
223
|
+
// Don't let the poll timer keep the event loop alive on its own.
|
|
224
|
+
if (typeof poll.unref === 'function')
|
|
225
|
+
poll.unref();
|
|
226
|
+
// Catch a build that completed before the watcher started (e.g. daemon restart).
|
|
227
|
+
trigger();
|
|
228
|
+
return {
|
|
229
|
+
async close() {
|
|
230
|
+
closed = true;
|
|
231
|
+
if (debounceTimer)
|
|
232
|
+
clearTimeout(debounceTimer);
|
|
233
|
+
if (retryTimer)
|
|
234
|
+
clearTimeout(retryTimer);
|
|
235
|
+
clearInterval(poll);
|
|
236
|
+
watcher?.close();
|
|
237
|
+
if (currentTick) {
|
|
238
|
+
try {
|
|
239
|
+
await currentTick;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
/* already logged */
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function errMsg(err) {
|
|
249
|
+
return err instanceof Error ? err.message : String(err);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Detects an expired/invalid session (HTTP 401). The SDK throws a typed
|
|
253
|
+
* AuthenticationError (status 401) on some paths; the instance-direct path
|
|
254
|
+
* (installRbeBuildFromBep) instead throws a plain Error whose message is
|
|
255
|
+
* `"<op> failed: <status> <body>"`. Match the status POSITION (`failed: 401`),
|
|
256
|
+
* not a bare `401` anywhere — a transient 5xx whose body merely contains "401"
|
|
257
|
+
* (a trace id, a JSON offset) must not latch auto-install off.
|
|
258
|
+
*/
|
|
259
|
+
function isAuthError(err) {
|
|
260
|
+
if (err && typeof err === 'object') {
|
|
261
|
+
const e = err;
|
|
262
|
+
if (e.name === 'AuthenticationError' || e.status === 401)
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
return /\bfailed: 401\b/.test(errMsg(err));
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=rbe-bep-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbe-bep-watcher.js","sourceRoot":"","sources":["../../src/lib/rbe-bep-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,12 +30,21 @@ export declare function waitForRbeRunning(client: Pick<XcodeClient, 'getRbe'>, i
|
|
|
30
30
|
* Builds the argv for the detached child that holds the tunnel: re-invokes this
|
|
31
31
|
* same CLI as `xcode rbe --serve --id <id> --port <port> [--api-key <key>]`.
|
|
32
32
|
* `scriptPath` is the CLI entry (process.argv[1]).
|
|
33
|
+
*
|
|
34
|
+
* When `workspaceRoot` and `target` are both present the child also starts the
|
|
35
|
+
* BEP auto-install watcher (watching `<workspaceRoot>/.limrun/bep.json` and
|
|
36
|
+
* registering the built `target`'s `.ipa` after each build). argv is the source
|
|
37
|
+
* of truth here because the child needs these at startup, before any pidfile is
|
|
38
|
+
* written.
|
|
33
39
|
*/
|
|
34
40
|
export declare function buildServeChildArgs(opts: {
|
|
35
41
|
scriptPath: string;
|
|
36
42
|
id: string;
|
|
37
43
|
port: number;
|
|
38
44
|
apiKey?: string;
|
|
45
|
+
workspaceRoot?: string;
|
|
46
|
+
target?: string;
|
|
47
|
+
bepFile?: string;
|
|
39
48
|
}): string[];
|
|
40
49
|
/**
|
|
41
50
|
* A running background tunnel's coordinates, persisted to `.limrun/rbe.pid` so
|
|
@@ -49,6 +58,10 @@ export type RbePidInfo = {
|
|
|
49
58
|
port: number;
|
|
50
59
|
/** iOS simulator created by `--ios`, torn down on --stop. Absent otherwise. */
|
|
51
60
|
simInstanceId?: string;
|
|
61
|
+
/** Build target the auto-install watcher tracks, when enabled. */
|
|
62
|
+
target?: string;
|
|
63
|
+
/** Absolute path to the build-event log the watcher reads (`--bep-file`); absent means the default. */
|
|
64
|
+
bepFile?: string;
|
|
52
65
|
};
|
|
53
66
|
export declare function rbePidFilePath(workspaceRoot: string): string;
|
|
54
67
|
export declare function writeRbePidFile(workspaceRoot: string, info: RbePidInfo): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbe-session.d.ts","sourceRoot":"","sources":["../../src/lib/rbe-session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,eAAO,MAAM,YAAY,EAAE,KAAiE,CAAC;AAc7F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3E,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EACnC,OAAO,EAAE,SAAS,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,CAYjF;AAED
|
|
1
|
+
{"version":3,"file":"rbe-session.d.ts","sourceRoot":"","sources":["../../src/lib/rbe-session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,eAAO,MAAM,YAAY,EAAE,KAAiE,CAAC;AAc7F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3E,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EACnC,OAAO,EAAE,SAAS,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,CAYjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,EAAE,CA6BX;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAE7E;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAUvE;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAM3D;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAezF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAc,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAajG"}
|
package/dist/lib/rbe-session.js
CHANGED
|
@@ -85,6 +85,12 @@ async function waitForRbeRunning(client, initial, opts = {}) {
|
|
|
85
85
|
* Builds the argv for the detached child that holds the tunnel: re-invokes this
|
|
86
86
|
* same CLI as `xcode rbe --serve --id <id> --port <port> [--api-key <key>]`.
|
|
87
87
|
* `scriptPath` is the CLI entry (process.argv[1]).
|
|
88
|
+
*
|
|
89
|
+
* When `workspaceRoot` and `target` are both present the child also starts the
|
|
90
|
+
* BEP auto-install watcher (watching `<workspaceRoot>/.limrun/bep.json` and
|
|
91
|
+
* registering the built `target`'s `.ipa` after each build). argv is the source
|
|
92
|
+
* of truth here because the child needs these at startup, before any pidfile is
|
|
93
|
+
* written.
|
|
88
94
|
*/
|
|
89
95
|
function buildServeChildArgs(opts) {
|
|
90
96
|
// --no-create: the child must never own instance creation. The parent already
|
|
@@ -102,6 +108,15 @@ function buildServeChildArgs(opts) {
|
|
|
102
108
|
'--port',
|
|
103
109
|
String(opts.port),
|
|
104
110
|
];
|
|
111
|
+
if (opts.workspaceRoot) {
|
|
112
|
+
args.push('--workspace-root', opts.workspaceRoot);
|
|
113
|
+
}
|
|
114
|
+
if (opts.target) {
|
|
115
|
+
args.push('--target', opts.target);
|
|
116
|
+
}
|
|
117
|
+
if (opts.bepFile) {
|
|
118
|
+
args.push('--bep-file', opts.bepFile);
|
|
119
|
+
}
|
|
105
120
|
if (opts.apiKey) {
|
|
106
121
|
args.push('--api-key', opts.apiKey);
|
|
107
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbe-session.js","sourceRoot":"","sources":["../../src/lib/rbe-session.ts"],"names":[],"mappings":";;;;;;AAyBA,4CAGC;AAMD,wCAuBC;AASD,8CAgBC;
|
|
1
|
+
{"version":3,"file":"rbe-session.js","sourceRoot":"","sources":["../../src/lib/rbe-session.ts"],"names":[],"mappings":";;;;;;AAyBA,4CAGC;AAMD,wCAuBC;AASD,8CAgBC;AAaD,kDAqCC;AAoBD,wCAEC;AAED,0CAEC;AAED,wCAUC;AAED,0CAMC;AAGD,wCAOC;AAOD,kDAeC;AAQD,sCAaC;AAvOD,4CAAoB;AACpB,8CAAsB;AACtB,gDAAwB;AASjB,MAAM,YAAY,GAAU,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAAhF,QAAA,YAAY,gBAAoE;AAE7F;;;;;;;;;GASG;AACH,MAAM,SAAS,GAAG,wFAAwF,CAAC;AAE3G,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,cAAc,CAClC,EAAoB,EACpB,OAA0E,EAAE;IAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,oBAAY,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpC,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,EAAE,CAAC,6BAA6B,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBACxE,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,iBAAiB,CACrC,MAAmC,EACnC,OAAkB,EAClB,OAAgD,EAAE;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,oBAAY,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAC3C,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACtF,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,KAAK,IAAI,YAAY,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAgF,CAAC;AAC1F,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CAAC,IAQnC;IACC,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,IAAI,GAAG;QACX,IAAI,CAAC,UAAU;QACf,OAAO;QACP,KAAK;QACL,SAAS;QACT,aAAa;QACb,MAAM;QACN,IAAI,CAAC,EAAE;QACP,QAAQ;QACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;KAClB,CAAC;IACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAoBD,SAAgB,cAAc,CAAC,aAAqB;IAClD,OAAO,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,eAAe,CAAC,aAAqB,EAAE,IAAgB;IACrE,YAAE,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,cAAc,CAAC,aAAqB;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,MAAoB,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,aAAqB;IACnD,IAAI,CAAC;QACH,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAI,GAAG,WAAW;IACxE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,aAAG,CAAC,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YACjD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,oDAAoD,CAAC,CAAC,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC3B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,IAAI,GAAG,WAAW,EAAE,SAAS,GAAG,GAAG;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAI,aAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,EAAE;YAC7B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -8,6 +8,19 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const LIMRUN_DIR = ".limrun";
|
|
10
10
|
export declare const TRY_IMPORT_LINE = "try-import %workspace%/.limrun/bazelrc";
|
|
11
|
+
/**
|
|
12
|
+
* Where Bazel writes its build-event log by default — under the self-gitignored
|
|
13
|
+
* `.limrun/`, the directory this module owns and writes the generated config
|
|
14
|
+
* into. Single source of truth for the default path the watcher reads and the
|
|
15
|
+
* generated bazelrc points `--build_event_json_file` at.
|
|
16
|
+
*/
|
|
17
|
+
export declare function defaultBepPath(workspaceRoot: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Resolves the BEP path for a run: an explicit `--bep-file` (made absolute
|
|
20
|
+
* against the invocation cwd, so it resolves regardless of bazel's cwd) or the
|
|
21
|
+
* default under `.limrun/`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveBepPath(workspaceRoot: string, bepFileFlag?: string): string;
|
|
11
24
|
/**
|
|
12
25
|
* Finds the Bazel workspace root by walking up from `startDir` to the first
|
|
13
26
|
* ancestor containing a MODULE.bazel / WORKSPACE / WORKSPACE.bazel, mirroring
|
|
@@ -137,5 +150,5 @@ export type RbeWorkspaceFiles = {
|
|
|
137
150
|
* try-import. The .gitignore containing "*" makes the directory self-ignoring
|
|
138
151
|
* so nothing else in the user's repo needs to change.
|
|
139
152
|
*/
|
|
140
|
-
export declare function writeRbeWorkspaceFiles(workspaceDir: string, xcodeVersionKey: string, port: number, isMacClient?: boolean, bazelMajor?: number | null): RbeWorkspaceFiles;
|
|
153
|
+
export declare function writeRbeWorkspaceFiles(workspaceDir: string, xcodeVersionKey: string, port: number, bepFile?: string, isMacClient?: boolean, bazelMajor?: number | null): RbeWorkspaceFiles;
|
|
141
154
|
//# sourceMappingURL=rbe-workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbe-workspace.d.ts","sourceRoot":"","sources":["../../src/lib/rbe-workspace.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,eAAe,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"rbe-workspace.d.ts","sourceRoot":"","sources":["../../src/lib/rbe-workspace.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,eAAe,2CAA2C,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF;AAID;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYtE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqBrE;AAqCD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAElE;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAmC3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAmBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAiB7D;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAqC,EAC9C,WAAW,GAAE,OAAuC,EACpD,UAAU,GAAE,MAAM,GAAG,IAA4C,GAChE,iBAAiB,CAmBnB"}
|
|
@@ -4,6 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TRY_IMPORT_LINE = exports.LIMRUN_DIR = void 0;
|
|
7
|
+
exports.defaultBepPath = defaultBepPath;
|
|
8
|
+
exports.resolveBepPath = resolveBepPath;
|
|
7
9
|
exports.findBazelWorkspaceRoot = findBazelWorkspaceRoot;
|
|
8
10
|
exports.inferBuildTarget = inferBuildTarget;
|
|
9
11
|
exports.detectBazelMajorVersion = detectBazelMajorVersion;
|
|
@@ -25,6 +27,23 @@ const path_1 = __importDefault(require("path"));
|
|
|
25
27
|
exports.LIMRUN_DIR = '.limrun';
|
|
26
28
|
exports.TRY_IMPORT_LINE = 'try-import %workspace%/.limrun/bazelrc';
|
|
27
29
|
const TRY_IMPORT_COMMENT = '# Added by lim xcode rbe: loads the generated remote-execution config.';
|
|
30
|
+
/**
|
|
31
|
+
* Where Bazel writes its build-event log by default — under the self-gitignored
|
|
32
|
+
* `.limrun/`, the directory this module owns and writes the generated config
|
|
33
|
+
* into. Single source of truth for the default path the watcher reads and the
|
|
34
|
+
* generated bazelrc points `--build_event_json_file` at.
|
|
35
|
+
*/
|
|
36
|
+
function defaultBepPath(workspaceRoot) {
|
|
37
|
+
return path_1.default.join(workspaceRoot, exports.LIMRUN_DIR, 'bep.json');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolves the BEP path for a run: an explicit `--bep-file` (made absolute
|
|
41
|
+
* against the invocation cwd, so it resolves regardless of bazel's cwd) or the
|
|
42
|
+
* default under `.limrun/`.
|
|
43
|
+
*/
|
|
44
|
+
function resolveBepPath(workspaceRoot, bepFileFlag) {
|
|
45
|
+
return bepFileFlag ? path_1.default.resolve(bepFileFlag) : defaultBepPath(workspaceRoot);
|
|
46
|
+
}
|
|
28
47
|
const WORKSPACE_MARKERS = ['MODULE.bazel', 'WORKSPACE', 'WORKSPACE.bazel'];
|
|
29
48
|
/**
|
|
30
49
|
* Finds the Bazel workspace root by walking up from `startDir` to the first
|
|
@@ -344,7 +363,7 @@ function ensureTryImport(workspaceDir) {
|
|
|
344
363
|
* try-import. The .gitignore containing "*" makes the directory self-ignoring
|
|
345
364
|
* so nothing else in the user's repo needs to change.
|
|
346
365
|
*/
|
|
347
|
-
function writeRbeWorkspaceFiles(workspaceDir, xcodeVersionKey, port, isMacClient = process.platform === 'darwin', bazelMajor = detectBazelMajorVersion(workspaceDir)) {
|
|
366
|
+
function writeRbeWorkspaceFiles(workspaceDir, xcodeVersionKey, port, bepFile = defaultBepPath(workspaceDir), isMacClient = process.platform === 'darwin', bazelMajor = detectBazelMajorVersion(workspaceDir)) {
|
|
348
367
|
const dir = path_1.default.join(workspaceDir, exports.LIMRUN_DIR);
|
|
349
368
|
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
350
369
|
const buildFile = path_1.default.join(dir, 'BUILD');
|
|
@@ -353,10 +372,11 @@ function writeRbeWorkspaceFiles(workspaceDir, xcodeVersionKey, port, isMacClient
|
|
|
353
372
|
// longer native globals. On a known Bazel 8 workspace they ARE native (and
|
|
354
373
|
// loading would fail), so omit the loads.
|
|
355
374
|
const emitLoads = isBazel9OrLater(bazelMajor);
|
|
356
|
-
//
|
|
357
|
-
// install
|
|
358
|
-
//
|
|
359
|
-
|
|
375
|
+
// The BEP path is absolute so it resolves regardless of bazel's cwd; the
|
|
376
|
+
// watcher and `lim xcode rbe install` read the same path. Defaults under the
|
|
377
|
+
// self-gitignored .limrun/; a custom --bep-file may point elsewhere, so make
|
|
378
|
+
// sure its parent exists before bazel tries to write it.
|
|
379
|
+
fs_1.default.mkdirSync(path_1.default.dirname(bepFile), { recursive: true });
|
|
360
380
|
fs_1.default.writeFileSync(buildFile, renderXcodeConfigBuild(xcodeVersionKey, emitLoads));
|
|
361
381
|
fs_1.default.writeFileSync(bazelrcFragment, renderLimrunBazelrc(port, xcodeVersionKey, isMacClient, bepFile));
|
|
362
382
|
fs_1.default.writeFileSync(path_1.default.join(dir, '.gitignore'), '*\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbe-workspace.js","sourceRoot":"","sources":["../../src/lib/rbe-workspace.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"rbe-workspace.js","sourceRoot":"","sources":["../../src/lib/rbe-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A "scope" (surfaced to users as a "workspace") isolates the most-recently-used
|
|
3
|
+
* instance per directory so that separate git worktrees / clones (and the
|
|
4
|
+
* parallel AI agents working in them) each get their own last-instance binding
|
|
5
|
+
* instead of all sharing one slot.
|
|
6
|
+
*
|
|
7
|
+
* Resolution order (first match wins), memoized for the lifetime of the process:
|
|
8
|
+
* 1. an explicit in-process override set from the global `--workspace` flag,
|
|
9
|
+
* 2. the LIM_WORKSPACE environment variable,
|
|
10
|
+
* 3. the most specific of: a `lim set-workspace-dir` assignment (cwd or an
|
|
11
|
+
* ancestor) and the current git repo/worktree root,
|
|
12
|
+
* 4. GLOBAL_SCOPE_KEY when neither applies.
|
|
13
|
+
*
|
|
14
|
+
* These require zero setup. Any command run inside a git repo (a clone or a
|
|
15
|
+
* linked worktree) resolves to that root and is isolated from every other
|
|
16
|
+
* checkout. A `set-workspace-dir` assignment governs its directory and
|
|
17
|
+
* everything beneath it, EXCEPT a nested git worktree/clone whose root is deeper
|
|
18
|
+
* than the assignment keeps its own isolation (most-specific boundary wins).
|
|
19
|
+
* Anything else shares a single global slot, preserving the convenient "use my
|
|
20
|
+
* most recent instance anywhere" behavior for casual, non-repo usage.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Shared scope used for invocations that are not inside any git repo. It is a
|
|
24
|
+
* non-path sentinel so it can never collide with a real directory scope key.
|
|
25
|
+
*/
|
|
26
|
+
export declare const GLOBAL_SCOPE_KEY = "__lim_global__";
|
|
27
|
+
/** Whether a resolved scope key is the shared non-repo global slot. */
|
|
28
|
+
export declare function isGlobalScopeKey(key: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Override the scope key for this process (used by the global `--workspace` flag).
|
|
31
|
+
* Passing an empty/undefined value clears the override.
|
|
32
|
+
*/
|
|
33
|
+
export declare function setScopeOverride(key: string | undefined): void;
|
|
34
|
+
/** Resolve the active scope key. Memoizes only the assignment/git/global fallback. */
|
|
35
|
+
export declare function getScopeKey(): string;
|
|
36
|
+
/** Reset memoized state. Intended for tests only. */
|
|
37
|
+
export declare function resetScopeCacheForTests(): void;
|
|
38
|
+
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/lib/scope.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAKD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAG9D;AAED,sFAAsF;AACtF,wBAAgB,WAAW,IAAI,MAAM,CAUpC;AAED,qDAAqD;AACrD,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C"}
|