looply-cli 0.3.0 → 0.5.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/dist/.src-hash +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +91 -85
- package/dist/bin.js.map +1 -1
- package/dist/connect-node.d.ts +8 -0
- package/dist/connect-node.d.ts.map +1 -0
- package/dist/connect-node.js +110 -0
- package/dist/connect-node.js.map +1 -0
- package/dist/connect.d.ts +135 -0
- package/dist/connect.d.ts.map +1 -0
- package/dist/connect.js +329 -0
- package/dist/connect.js.map +1 -0
- package/dist/daemon-cmd.d.ts +11 -2
- package/dist/daemon-cmd.d.ts.map +1 -1
- package/dist/daemon-cmd.js +20 -6
- package/dist/daemon-cmd.js.map +1 -1
- package/dist/goal-compile.d.ts.map +1 -1
- package/dist/goal-compile.js +4 -1
- package/dist/goal-compile.js.map +1 -1
- package/dist/mcp-main.js +10 -0
- package/dist/mcp-main.js.map +1 -1
- package/dist/mcp-server.d.ts +14 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +35 -5
- package/dist/mcp-server.js.map +1 -1
- package/dist/model-transport.d.ts +7 -0
- package/dist/model-transport.d.ts.map +1 -1
- package/dist/model-transport.js +4 -1
- package/dist/model-transport.js.map +1 -1
- package/dist/packet-for-goal.d.ts +4 -2
- package/dist/packet-for-goal.d.ts.map +1 -1
- package/dist/packet-for-goal.js +4 -2
- package/dist/packet-for-goal.js.map +1 -1
- package/dist/repo-init.d.ts +36 -0
- package/dist/repo-init.d.ts.map +1 -0
- package/dist/repo-init.js +61 -0
- package/dist/repo-init.js.map +1 -0
- package/dist/repo-origin.d.ts +15 -0
- package/dist/repo-origin.d.ts.map +1 -0
- package/dist/repo-origin.js +28 -0
- package/dist/repo-origin.js.map +1 -0
- package/dist/repo-requests.d.ts +79 -0
- package/dist/repo-requests.d.ts.map +1 -0
- package/dist/repo-requests.js +180 -0
- package/dist/repo-requests.js.map +1 -0
- package/dist/repo-scan.d.ts +47 -0
- package/dist/repo-scan.d.ts.map +1 -0
- package/dist/repo-scan.js +84 -0
- package/dist/repo-scan.js.map +1 -0
- package/dist/run-cmd.d.ts +16 -1
- package/dist/run-cmd.d.ts.map +1 -1
- package/dist/run-cmd.js +68 -9
- package/dist/run-cmd.js.map +1 -1
- package/dist/serve-cmd.d.ts +17 -0
- package/dist/serve-cmd.d.ts.map +1 -1
- package/dist/serve-cmd.js +29 -2
- package/dist/serve-cmd.js.map +1 -1
- package/dist/serve-tasks.d.ts +17 -0
- package/dist/serve-tasks.d.ts.map +1 -0
- package/dist/serve-tasks.js +124 -0
- package/dist/serve-tasks.js.map +1 -0
- package/dist/serve.d.ts +36 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +89 -12
- package/dist/serve.js.map +1 -1
- package/dist/server-client.d.ts +37 -0
- package/dist/server-client.d.ts.map +1 -1
- package/dist/server-client.js +21 -0
- package/dist/server-client.js.map +1 -1
- package/dist/sibling-repos.d.ts +101 -0
- package/dist/sibling-repos.d.ts.map +1 -0
- package/dist/sibling-repos.js +160 -0
- package/dist/sibling-repos.js.map +1 -0
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +3 -1
- package/dist/sync.js.map +1 -1
- package/dist/tool-bridge.d.ts +51 -1
- package/dist/tool-bridge.d.ts.map +1 -1
- package/dist/tool-bridge.js +62 -6
- package/dist/tool-bridge.js.map +1 -1
- package/dist/tool-protocol.d.ts +21 -3
- package/dist/tool-protocol.d.ts.map +1 -1
- package/dist/tool-protocol.js.map +1 -1
- package/dist/tool-worker.d.ts +13 -1
- package/dist/tool-worker.d.ts.map +1 -1
- package/dist/tool-worker.js +9 -2
- package/dist/tool-worker.js.map +1 -1
- package/package.json +2 -2
package/dist/serve-cmd.d.ts
CHANGED
|
@@ -32,8 +32,23 @@ export interface ChildHandle {
|
|
|
32
32
|
/** Ask it to stop; `force` is the second ask. */
|
|
33
33
|
kill(force: boolean): void;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Periodic work the supervisor does besides keeping children alive — the
|
|
37
|
+
* rescan of the code roots and the clone-request poll (`serve-tasks.ts`).
|
|
38
|
+
*
|
|
39
|
+
* ⚠️ A TASK NEVER OVERLAPS ITSELF: the next run is scheduled only when the
|
|
40
|
+
* last one has finished, however long it took. And a task that throws is
|
|
41
|
+
* logged and run again on schedule; it cannot take the supervisor down.
|
|
42
|
+
*/
|
|
43
|
+
export interface SupervisorTask {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly everyMs: number;
|
|
46
|
+
run(): unknown;
|
|
47
|
+
}
|
|
35
48
|
export interface SupervisorDeps {
|
|
36
49
|
readonly platform: Platform;
|
|
50
|
+
/** Run once at start, then every `everyMs` after each run finishes. */
|
|
51
|
+
readonly tasks?: readonly SupervisorTask[];
|
|
37
52
|
/** The listed repositories. Throws when the list cannot be read. */
|
|
38
53
|
repos(): readonly ServedRepo[];
|
|
39
54
|
configExists(repo: string): boolean;
|
|
@@ -55,6 +70,7 @@ export interface SupervisorDeps {
|
|
|
55
70
|
export declare class Supervisor {
|
|
56
71
|
private readonly deps;
|
|
57
72
|
private readonly entries;
|
|
73
|
+
private readonly taskTimers;
|
|
58
74
|
private pollTimer;
|
|
59
75
|
private stopping;
|
|
60
76
|
private readError;
|
|
@@ -66,6 +82,7 @@ export declare class Supervisor {
|
|
|
66
82
|
keys(): string[];
|
|
67
83
|
running(): string[];
|
|
68
84
|
start(): void;
|
|
85
|
+
private runTask;
|
|
69
86
|
/** Re-read the list and make the running set match it. */
|
|
70
87
|
poll(): void;
|
|
71
88
|
/**
|
package/dist/serve-cmd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-cmd.d.ts","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"serve-cmd.d.ts","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/serve-cmd.js
CHANGED
|
@@ -9,6 +9,7 @@ const node_fs_1 = require("node:fs");
|
|
|
9
9
|
const node_os_1 = require("node:os");
|
|
10
10
|
const node_path_1 = require("node:path");
|
|
11
11
|
const run_lease_1 = require("./run-lease");
|
|
12
|
+
const serve_tasks_1 = require("./serve-tasks");
|
|
12
13
|
const serve_1 = require("./serve");
|
|
13
14
|
/**
|
|
14
15
|
* `looply serve` and its verbs — the composition around `serve.ts`.
|
|
@@ -51,6 +52,7 @@ exports.STOP_GRACE_MS = 10_000;
|
|
|
51
52
|
class Supervisor {
|
|
52
53
|
deps;
|
|
53
54
|
entries = new Map();
|
|
55
|
+
taskTimers = new Map();
|
|
54
56
|
pollTimer = null;
|
|
55
57
|
stopping = false;
|
|
56
58
|
readError = null;
|
|
@@ -69,6 +71,22 @@ class Supervisor {
|
|
|
69
71
|
}
|
|
70
72
|
start() {
|
|
71
73
|
this.poll();
|
|
74
|
+
for (const task of this.deps.tasks ?? [])
|
|
75
|
+
void this.runTask(task);
|
|
76
|
+
}
|
|
77
|
+
async runTask(task) {
|
|
78
|
+
this.taskTimers.delete(task.name);
|
|
79
|
+
if (this.stopping)
|
|
80
|
+
return;
|
|
81
|
+
try {
|
|
82
|
+
await task.run();
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
this.deps.log(`[serve] ${task.name} failed — ${e?.message ?? String(e)}; trying again later`);
|
|
86
|
+
}
|
|
87
|
+
if (this.stopping)
|
|
88
|
+
return;
|
|
89
|
+
this.taskTimers.set(task.name, this.deps.setTimer(() => void this.runTask(task), task.everyMs));
|
|
72
90
|
}
|
|
73
91
|
/** Re-read the list and make the running set match it. */
|
|
74
92
|
poll() {
|
|
@@ -107,6 +125,9 @@ class Supervisor {
|
|
|
107
125
|
if (this.pollTimer !== null)
|
|
108
126
|
this.deps.clearTimer(this.pollTimer);
|
|
109
127
|
this.pollTimer = null;
|
|
128
|
+
for (const t of this.taskTimers.values())
|
|
129
|
+
this.deps.clearTimer(t);
|
|
130
|
+
this.taskTimers.clear();
|
|
110
131
|
for (const [key, e] of this.entries) {
|
|
111
132
|
if (e.timer !== null)
|
|
112
133
|
this.deps.clearTimer(e.timer);
|
|
@@ -301,6 +322,8 @@ function list(deps) {
|
|
|
301
322
|
const registry = load(deps);
|
|
302
323
|
if (registry === null)
|
|
303
324
|
return exports.EXIT_REFUSED;
|
|
325
|
+
for (const r of registry.roots ?? [])
|
|
326
|
+
deps.out(`serve: watching ${r.path} for new repositories`);
|
|
304
327
|
if (registry.repos.length === 0) {
|
|
305
328
|
deps.out('serve: no repositories are served yet. `looply serve add` in a repository to add it.');
|
|
306
329
|
return exports.EXIT_OK;
|
|
@@ -360,9 +383,12 @@ async function supervise(deps) {
|
|
|
360
383
|
const registry = load(deps);
|
|
361
384
|
if (registry === null)
|
|
362
385
|
return exports.EXIT_REFUSED;
|
|
363
|
-
|
|
386
|
+
// Recorded roots are something to do even with nothing listed yet: the
|
|
387
|
+
// rescan finds what appears there, and clone requests land there.
|
|
388
|
+
if (registry.repos.length === 0 && (registry.roots ?? []).length === 0) {
|
|
364
389
|
deps.out('serve: no repositories are served yet.');
|
|
365
|
-
deps.out('
|
|
390
|
+
deps.out(' `looply connect` sets up and serves every repository under your code folder;');
|
|
391
|
+
deps.out(' or, in each repository you want served: `looply serve add` (it needs `looply init` first).');
|
|
366
392
|
deps.out(' then run `looply serve` again, or `looply serve install` to start it at login.');
|
|
367
393
|
return exports.EXIT_OK;
|
|
368
394
|
}
|
|
@@ -451,6 +477,7 @@ function nodeServeDeps() {
|
|
|
451
477
|
for (const s of [process.stdout, process.stderr])
|
|
452
478
|
s.on('error', () => undefined);
|
|
453
479
|
return {
|
|
480
|
+
tasks: (0, serve_tasks_1.nodeSupervisorTasks)((0, node_os_1.homedir)(), process.platform, (line) => process.stdout.write(`${line}\n`)),
|
|
454
481
|
now: () => Date.now(),
|
|
455
482
|
setTimer: (fn, ms) => setTimeout(fn, ms),
|
|
456
483
|
clearTimer: (h) => clearTimeout(h),
|
package/dist/serve-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-cmd.js","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serve-cmd.js","sourceRoot":"","sources":["../src/serve-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Platform } from './serve';
|
|
2
|
+
import type { SupervisorTask } from './serve-cmd';
|
|
3
|
+
/**
|
|
4
|
+
* The supervisor's two periodic jobs, wired to the real machine.
|
|
5
|
+
*
|
|
6
|
+
* rescan every five minutes, the recorded code roots are walked and
|
|
7
|
+
* any new repository is set up and served (`connect.ts`);
|
|
8
|
+
* clone requests every minute, the server is asked what this machine
|
|
9
|
+
* should clone (`repo-requests.ts`).
|
|
10
|
+
*
|
|
11
|
+
* The decisions live in those two files; this one only hands them a
|
|
12
|
+
* filesystem, git and the server.
|
|
13
|
+
*/
|
|
14
|
+
/** A clone that has not finished in this long is killed and reported as failed. */
|
|
15
|
+
export declare const CLONE_TIMEOUT_MS: number;
|
|
16
|
+
export declare function nodeSupervisorTasks(home: string, platform: Platform, log: (line: string) => void): SupervisorTask[];
|
|
17
|
+
//# sourceMappingURL=serve-tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-tasks.d.ts","sourceRoot":"","sources":["../src/serve-tasks.ts"],"names":[],"mappings":"AASA,OAAO,EAA0D,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD;;;;;;;;;;GAUG;AAEH,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAG5C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,cAAc,EAAE,CA4CnH"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLONE_TIMEOUT_MS = void 0;
|
|
4
|
+
exports.nodeSupervisorTasks = nodeSupervisorTasks;
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const connect_1 = require("./connect");
|
|
8
|
+
const git_driver_1 = require("./git-driver");
|
|
9
|
+
const machine_store_1 = require("./machine-store");
|
|
10
|
+
const repo_origin_1 = require("./repo-origin");
|
|
11
|
+
const repo_init_1 = require("./repo-init");
|
|
12
|
+
const repo_requests_1 = require("./repo-requests");
|
|
13
|
+
const repo_scan_1 = require("./repo-scan");
|
|
14
|
+
const serve_1 = require("./serve");
|
|
15
|
+
const server_client_1 = require("./server-client");
|
|
16
|
+
const trusted_git_1 = require("./trusted-git");
|
|
17
|
+
/**
|
|
18
|
+
* The supervisor's two periodic jobs, wired to the real machine.
|
|
19
|
+
*
|
|
20
|
+
* rescan every five minutes, the recorded code roots are walked and
|
|
21
|
+
* any new repository is set up and served (`connect.ts`);
|
|
22
|
+
* clone requests every minute, the server is asked what this machine
|
|
23
|
+
* should clone (`repo-requests.ts`).
|
|
24
|
+
*
|
|
25
|
+
* The decisions live in those two files; this one only hands them a
|
|
26
|
+
* filesystem, git and the server.
|
|
27
|
+
*/
|
|
28
|
+
/** A clone that has not finished in this long is killed and reported as failed. */
|
|
29
|
+
exports.CLONE_TIMEOUT_MS = 15 * 60_000;
|
|
30
|
+
/* istanbul ignore next — real fs, git and network; the logic lives in connect.ts and repo-requests.ts */
|
|
31
|
+
function nodeSupervisorTasks(home, platform, log) {
|
|
32
|
+
const provisionDeps = {
|
|
33
|
+
home,
|
|
34
|
+
platform,
|
|
35
|
+
fs: serve_1.nodeServeFs,
|
|
36
|
+
now: () => new Date(),
|
|
37
|
+
initRepo: (dir) => (0, repo_init_1.initRepoQuietly)(dir),
|
|
38
|
+
configProblem: (dir) => (0, repo_init_1.configProblemOf)(dir),
|
|
39
|
+
};
|
|
40
|
+
const rescanner = new connect_1.RootRescanner({ ...provisionDeps, scanFs: repo_scan_1.nodeScanFs, log });
|
|
41
|
+
const client = () => {
|
|
42
|
+
const identity = new machine_store_1.MachineStore((0, machine_store_1.machineFilePath)(home)).load();
|
|
43
|
+
if (identity === null)
|
|
44
|
+
return null;
|
|
45
|
+
return new server_client_1.ServerClient({ baseUrl: identity.serverUrl, token: identity.token });
|
|
46
|
+
};
|
|
47
|
+
const worker = new repo_requests_1.RepoRequestWorker({
|
|
48
|
+
platform,
|
|
49
|
+
list: async () => {
|
|
50
|
+
const c = client();
|
|
51
|
+
if (c === null)
|
|
52
|
+
return null;
|
|
53
|
+
return (await c.machineRepoRequests()).requests ?? [];
|
|
54
|
+
},
|
|
55
|
+
report: async (id, result) => {
|
|
56
|
+
const c = client();
|
|
57
|
+
if (c === null)
|
|
58
|
+
throw new Error('this machine is no longer paired');
|
|
59
|
+
await c.reportRepoRequest(id, result);
|
|
60
|
+
},
|
|
61
|
+
cloneRoot: () => (0, serve_1.cloneRootOf)((0, serve_1.readRegistry)(serve_1.nodeServeFs, (0, serve_1.servedFilePath)(home)), home, platform),
|
|
62
|
+
exists: (p) => (0, node_fs_1.existsSync)(p),
|
|
63
|
+
mkdirp: (p) => {
|
|
64
|
+
(0, node_fs_1.mkdirSync)(p, { recursive: true });
|
|
65
|
+
},
|
|
66
|
+
originOf: (dir) => (0, repo_origin_1.readOriginUrl)((0, git_driver_1.nodeGitExec)(dir)),
|
|
67
|
+
clone: nodeClone,
|
|
68
|
+
provision: (dir) => (0, connect_1.provisionRepos)([dir], provisionDeps)[0],
|
|
69
|
+
log,
|
|
70
|
+
});
|
|
71
|
+
return [
|
|
72
|
+
{ name: 'rescan', everyMs: connect_1.RESCAN_EVERY_MS, run: () => rescanner.run() },
|
|
73
|
+
{ name: 'clone requests', everyMs: repo_requests_1.REPO_REQUEST_POLL_MS, run: () => worker.run() },
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* `git clone`, with the same trust the rest of the CLI gives git.
|
|
78
|
+
*
|
|
79
|
+
* ⚠️ NOT `nodeGitExec`, AND ON PURPOSE: that refuses to run anywhere that is
|
|
80
|
+
* not already a repository root, and a clone by definition runs where there is
|
|
81
|
+
* none yet. Everything else it does is kept — the absolute git binary (never
|
|
82
|
+
* one the cwd chooses), hooks pointed at an empty directory, signing off, the
|
|
83
|
+
* `GIT_` namespace rebuilt — with no `GIT_DIR` pin, because there is no
|
|
84
|
+
* repository to pin to.
|
|
85
|
+
*
|
|
86
|
+
* ⚠️ NO PROMPTS. `GIT_TERMINAL_PROMPT=0` comes from `trustedGitEnv`, and the
|
|
87
|
+
* credential manager's own window is turned off too: a supervisor at login has
|
|
88
|
+
* nobody to answer it, and a clone waiting on a hidden dialog would hold every
|
|
89
|
+
* later request behind it. A private repository needs credentials the machine
|
|
90
|
+
* already has.
|
|
91
|
+
*/
|
|
92
|
+
/* istanbul ignore next — real git */
|
|
93
|
+
function nodeClone(url, target) {
|
|
94
|
+
return new Promise((resolve) => {
|
|
95
|
+
const bin = (0, trusted_git_1.gitBinary)();
|
|
96
|
+
if (bin === null) {
|
|
97
|
+
resolve({ ok: false, error: 'git was not found on PATH' });
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const env = { ...(0, trusted_git_1.trustedGitEnv)(process.env), GCM_INTERACTIVE: 'never' };
|
|
101
|
+
const child = (0, node_child_process_1.spawn)(bin, [...(0, trusted_git_1.trustedGitArgs)(), 'clone', '--quiet', '--', url, target], {
|
|
102
|
+
env,
|
|
103
|
+
stdio: ['ignore', 'ignore', 'pipe'],
|
|
104
|
+
windowsHide: true,
|
|
105
|
+
});
|
|
106
|
+
const err = [];
|
|
107
|
+
child.stderr.on('data', (d) => err.push(d.toString('utf8')));
|
|
108
|
+
const timer = setTimeout(() => child.kill('SIGKILL'), exports.CLONE_TIMEOUT_MS);
|
|
109
|
+
child.on('error', (e) => {
|
|
110
|
+
clearTimeout(timer);
|
|
111
|
+
resolve({ ok: false, error: e.message });
|
|
112
|
+
});
|
|
113
|
+
child.on('close', (code, signal) => {
|
|
114
|
+
clearTimeout(timer);
|
|
115
|
+
if (code === 0)
|
|
116
|
+
resolve({ ok: true });
|
|
117
|
+
else if (signal)
|
|
118
|
+
resolve({ ok: false, error: `git clone did not finish in ${exports.CLONE_TIMEOUT_MS / 60_000} minutes` });
|
|
119
|
+
else
|
|
120
|
+
resolve({ ok: false, error: err.join('').trim() || `git clone exited with code ${code}` });
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=serve-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-tasks.js","sourceRoot":"","sources":["../src/serve-tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/serve.d.ts
CHANGED
|
@@ -34,9 +34,31 @@ export interface ServedRepo {
|
|
|
34
34
|
readonly path: string;
|
|
35
35
|
readonly addedAt: string;
|
|
36
36
|
}
|
|
37
|
+
/** A folder `looply connect` was told holds code; rescanned for new repositories. */
|
|
38
|
+
export interface ServedRoot {
|
|
39
|
+
readonly path: string;
|
|
40
|
+
readonly addedAt: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The served list.
|
|
44
|
+
*
|
|
45
|
+
* Version 2 adds what `looply connect` records — the code roots the supervisor
|
|
46
|
+
* rescans, where requested clones go, and the repositories a person took out
|
|
47
|
+
* of service under a root (so a rescan does not put them straight back).
|
|
48
|
+
* Version 1 files are read as version 2 with none of those; every write is
|
|
49
|
+
* version 2.
|
|
50
|
+
*/
|
|
37
51
|
export interface ServedRegistry {
|
|
38
|
-
readonly version: 1;
|
|
52
|
+
readonly version: 1 | 2;
|
|
39
53
|
readonly repos: readonly ServedRepo[];
|
|
54
|
+
readonly roots?: readonly ServedRoot[];
|
|
55
|
+
/** Where requested clones go; absent means the first root, then `~/looply-repos`. */
|
|
56
|
+
readonly cloneRoot?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Removed with `serve remove` while under a root. A rescan skips these;
|
|
59
|
+
* `serve add` takes one off the list again.
|
|
60
|
+
*/
|
|
61
|
+
readonly ignored?: readonly ServedRoot[];
|
|
40
62
|
}
|
|
41
63
|
export declare const EMPTY_REGISTRY: ServedRegistry;
|
|
42
64
|
/**
|
|
@@ -78,6 +100,7 @@ export declare function configPathOf(repo: string, platform: Platform): string;
|
|
|
78
100
|
* same rule `MachineStore.load` keeps for the identity.
|
|
79
101
|
*/
|
|
80
102
|
export declare function readRegistry(fs: ServeFs, file: string): ServedRegistry;
|
|
103
|
+
/** Always written as version 2, whatever was read. */
|
|
81
104
|
export declare function writeRegistry(fs: ServeFs, file: string, registry: ServedRegistry): void;
|
|
82
105
|
export declare function addRepo(registry: ServedRegistry, path: string, addedAt: string, platform: Platform): {
|
|
83
106
|
registry: ServedRegistry;
|
|
@@ -87,6 +110,16 @@ export declare function removeRepo(registry: ServedRegistry, path: string, platf
|
|
|
87
110
|
registry: ServedRegistry;
|
|
88
111
|
removed: boolean;
|
|
89
112
|
};
|
|
113
|
+
/** Whether `path` is one of the recorded roots or inside one. */
|
|
114
|
+
export declare function isUnderRoot(registry: ServedRegistry, path: string, platform: Platform): boolean;
|
|
115
|
+
/** Record code roots; ones already recorded are left as they are. */
|
|
116
|
+
export declare function addRoots(registry: ServedRegistry, paths: readonly string[], addedAt: string, platform: Platform): {
|
|
117
|
+
registry: ServedRegistry;
|
|
118
|
+
added: string[];
|
|
119
|
+
};
|
|
120
|
+
export declare function isIgnored(registry: ServedRegistry, path: string, platform: Platform): boolean;
|
|
121
|
+
/** Where a requested clone goes: the recorded clone root, else the first code root, else `~/looply-repos`. */
|
|
122
|
+
export declare function cloneRootOf(registry: ServedRegistry, home: string, platform: Platform): string;
|
|
90
123
|
/** 2s, 4s, 8s … capped at a minute. `failures` counts consecutive short lives. */
|
|
91
124
|
export declare function backoffDelay(failures: number): number;
|
|
92
125
|
/**
|
|
@@ -143,6 +176,8 @@ export declare function takeServeLock(fs: ServeFs, path: string, self: {
|
|
|
143
176
|
pid: number;
|
|
144
177
|
at: string;
|
|
145
178
|
}, probe: ProbeFn): ServeLockResult;
|
|
179
|
+
/** The pid of a supervisor holding the lock that is not known to be dead, or null when there is none. */
|
|
180
|
+
export declare function liveServeLockHolder(fs: ServeFs, path: string, probe: ProbeFn): number | null;
|
|
146
181
|
export declare function windowsStartupFolder(env: NodeJS.ProcessEnv): string | null;
|
|
147
182
|
export interface LaunchPaths {
|
|
148
183
|
/** Absolute path of the node executable (`process.execPath`). */
|
package/dist/serve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAE/C,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AACtC,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,mEAAmE;AACnE,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAE/C,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AACtC,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,mEAAmE;AACnE,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAED,eAAO,MAAM,cAAc,EAAE,cAAqD,CAAC;AAEnF;;;;GAIG;AACH,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oEAAoE;IACpE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACtD;AAED,eAAO,MAAM,WAAW,EAAE,OAyBzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE/D;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE9D;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAID;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAOxF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEhE;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAElE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAuBtE;AAYD,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAUvF;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GACjB;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAQ9C;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,GACjB;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAWhD;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAO/F;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GACjB;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAU/C;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAG7F;AAED,8GAA8G;AAC9G,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE9F;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;;;;;GAMG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,oFAAoF;IACpF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAO5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAYrH;AAED,2EAA2E;AAC3E,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAM;IAEnB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAM7B,KAAK,IAAI,MAAM,EAAE;CAKlB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACjC,KAAK,EAAE,OAAO,GACb,eAAe,CAyBjB;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK5F;AAWD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAI1E;AAED,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAQ3D;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAsC1E"}
|
package/dist/serve.js
CHANGED
|
@@ -12,9 +12,14 @@ exports.readRegistry = readRegistry;
|
|
|
12
12
|
exports.writeRegistry = writeRegistry;
|
|
13
13
|
exports.addRepo = addRepo;
|
|
14
14
|
exports.removeRepo = removeRepo;
|
|
15
|
+
exports.isUnderRoot = isUnderRoot;
|
|
16
|
+
exports.addRoots = addRoots;
|
|
17
|
+
exports.isIgnored = isIgnored;
|
|
18
|
+
exports.cloneRootOf = cloneRootOf;
|
|
15
19
|
exports.backoffDelay = backoffDelay;
|
|
16
20
|
exports.reconcile = reconcile;
|
|
17
21
|
exports.takeServeLock = takeServeLock;
|
|
22
|
+
exports.liveServeLockHolder = liveServeLockHolder;
|
|
18
23
|
exports.windowsStartupFolder = windowsStartupFolder;
|
|
19
24
|
exports.windowsStartupScript = windowsStartupScript;
|
|
20
25
|
exports.unixServiceHint = unixServiceHint;
|
|
@@ -50,7 +55,7 @@ exports.BACKOFF_FIRST_MS = 2_000;
|
|
|
50
55
|
exports.BACKOFF_MAX_MS = 60_000;
|
|
51
56
|
/** A child that stayed up this long has earned a fresh backoff. */
|
|
52
57
|
exports.BACKOFF_RESET_AFTER_MS = 5 * 60_000;
|
|
53
|
-
exports.EMPTY_REGISTRY = { version:
|
|
58
|
+
exports.EMPTY_REGISTRY = { version: 2, repos: [], roots: [] };
|
|
54
59
|
exports.nodeServeFs = {
|
|
55
60
|
...machine_store_1.nodeMachineFs,
|
|
56
61
|
isDir: (p) => {
|
|
@@ -141,32 +146,95 @@ function readRegistry(fs, file) {
|
|
|
141
146
|
throw new Error(`${file} is not valid JSON — fix it or move it aside, then add the repositories again`);
|
|
142
147
|
}
|
|
143
148
|
const o = parsed;
|
|
144
|
-
if (typeof o !== 'object' || o === null || o.version !== 1 || !Array.isArray(o.repos)) {
|
|
145
|
-
throw new Error(`${file} is not a version 1 served-repositories list`);
|
|
149
|
+
if (typeof o !== 'object' || o === null || (o.version !== 1 && o.version !== 2) || !Array.isArray(o.repos)) {
|
|
150
|
+
throw new Error(`${file} is not a version 1 or 2 served-repositories list`);
|
|
146
151
|
}
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
// ⚠️ A NEWER FIELD THAT IS MALFORMED IS DROPPED, NOT FATAL. The repositories
|
|
153
|
+
// are what keeps daemons running; a bad `roots` must not stop all of them.
|
|
154
|
+
const cloneRoot = typeof o.cloneRoot === 'string' && o.cloneRoot !== '' ? o.cloneRoot : undefined;
|
|
155
|
+
const ignored = Array.isArray(o.ignored) ? pathList(o.ignored) : [];
|
|
156
|
+
return {
|
|
157
|
+
version: 2,
|
|
158
|
+
repos: pathList(o.repos),
|
|
159
|
+
roots: Array.isArray(o.roots) ? pathList(o.roots) : [],
|
|
160
|
+
...(cloneRoot !== undefined ? { cloneRoot } : {}),
|
|
161
|
+
...(ignored.length > 0 ? { ignored } : {}),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function pathList(list) {
|
|
165
|
+
const out = [];
|
|
166
|
+
for (const r of list) {
|
|
149
167
|
const e = r;
|
|
150
168
|
if (typeof e !== 'object' || e === null || typeof e.path !== 'string' || e.path === '')
|
|
151
169
|
continue;
|
|
152
|
-
|
|
170
|
+
out.push({ path: e.path, addedAt: typeof e.addedAt === 'string' ? e.addedAt : '' });
|
|
153
171
|
}
|
|
154
|
-
return
|
|
172
|
+
return out;
|
|
155
173
|
}
|
|
174
|
+
/** Always written as version 2, whatever was read. */
|
|
156
175
|
function writeRegistry(fs, file, registry) {
|
|
157
176
|
fs.mkdirp((0, node_path_1.dirname)(file));
|
|
158
|
-
|
|
177
|
+
const out = {
|
|
178
|
+
version: 2,
|
|
179
|
+
repos: registry.repos,
|
|
180
|
+
roots: registry.roots ?? [],
|
|
181
|
+
...(registry.cloneRoot !== undefined ? { cloneRoot: registry.cloneRoot } : {}),
|
|
182
|
+
...(registry.ignored !== undefined && registry.ignored.length > 0 ? { ignored: registry.ignored } : {}),
|
|
183
|
+
};
|
|
184
|
+
fs.write(file, `${JSON.stringify(out, null, 2)}\n`);
|
|
159
185
|
}
|
|
160
186
|
function addRepo(registry, path, addedAt, platform) {
|
|
161
187
|
const key = repoKey(path, platform);
|
|
188
|
+
// Adding by hand is the person changing their mind about an earlier remove.
|
|
189
|
+
const before = registry.ignored ?? [];
|
|
190
|
+
const ignored = before.filter((r) => repoKey(r.path, platform) !== key);
|
|
191
|
+
const next = ignored.length !== before.length ? { ...registry, ignored } : registry;
|
|
162
192
|
if (registry.repos.some((r) => repoKey(r.path, platform) === key))
|
|
163
|
-
return { registry, added: false };
|
|
164
|
-
return { registry: { version:
|
|
193
|
+
return { registry: next, added: false };
|
|
194
|
+
return { registry: { ...next, version: 2, repos: [...registry.repos, { path, addedAt }] }, added: true };
|
|
165
195
|
}
|
|
166
196
|
function removeRepo(registry, path, platform) {
|
|
167
197
|
const key = repoKey(path, platform);
|
|
168
|
-
const
|
|
169
|
-
|
|
198
|
+
const gone = registry.repos.find((r) => repoKey(r.path, platform) === key);
|
|
199
|
+
if (gone === undefined)
|
|
200
|
+
return { registry, removed: false };
|
|
201
|
+
const repos = registry.repos.filter((r) => r !== gone);
|
|
202
|
+
// Under a recorded root, the rescan would add it straight back within five
|
|
203
|
+
// minutes; so it is remembered as taken out on purpose.
|
|
204
|
+
const ignored = isUnderRoot(registry, path, platform)
|
|
205
|
+
? [...(registry.ignored ?? []), { path: gone.path, addedAt: gone.addedAt }]
|
|
206
|
+
: registry.ignored;
|
|
207
|
+
return { registry: { ...registry, version: 2, repos, ...(ignored ? { ignored } : {}) }, removed: true };
|
|
208
|
+
}
|
|
209
|
+
/** Whether `path` is one of the recorded roots or inside one. */
|
|
210
|
+
function isUnderRoot(registry, path, platform) {
|
|
211
|
+
const p = pathFor(platform);
|
|
212
|
+
const key = repoKey(path, platform);
|
|
213
|
+
return (registry.roots ?? []).some((r) => {
|
|
214
|
+
const rel = p.relative(repoKey(r.path, platform), key);
|
|
215
|
+
return rel === '' || (!rel.startsWith('..') && !p.isAbsolute(rel));
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/** Record code roots; ones already recorded are left as they are. */
|
|
219
|
+
function addRoots(registry, paths, addedAt, platform) {
|
|
220
|
+
const roots = [...(registry.roots ?? [])];
|
|
221
|
+
const added = [];
|
|
222
|
+
for (const path of paths) {
|
|
223
|
+
const key = repoKey(path, platform);
|
|
224
|
+
if (roots.some((r) => repoKey(r.path, platform) === key))
|
|
225
|
+
continue;
|
|
226
|
+
roots.push({ path, addedAt });
|
|
227
|
+
added.push(path);
|
|
228
|
+
}
|
|
229
|
+
return { registry: { ...registry, version: 2, roots }, added };
|
|
230
|
+
}
|
|
231
|
+
function isIgnored(registry, path, platform) {
|
|
232
|
+
const key = repoKey(path, platform);
|
|
233
|
+
return (registry.ignored ?? []).some((r) => repoKey(r.path, platform) === key);
|
|
234
|
+
}
|
|
235
|
+
/** Where a requested clone goes: the recorded clone root, else the first code root, else `~/looply-repos`. */
|
|
236
|
+
function cloneRootOf(registry, home, platform) {
|
|
237
|
+
return registry.cloneRoot ?? registry.roots?.[0]?.path ?? pathFor(platform).join(home, 'looply-repos');
|
|
170
238
|
}
|
|
171
239
|
/** 2s, 4s, 8s … capped at a minute. `failures` counts consecutive short lives. */
|
|
172
240
|
function backoffDelay(failures) {
|
|
@@ -260,6 +328,15 @@ function takeServeLock(fs, path, self, probe) {
|
|
|
260
328
|
const holder = lockPid(fs, path);
|
|
261
329
|
return { kind: 'held', pid: holder ?? 0 };
|
|
262
330
|
}
|
|
331
|
+
/** The pid of a supervisor holding the lock that is not known to be dead, or null when there is none. */
|
|
332
|
+
function liveServeLockHolder(fs, path, probe) {
|
|
333
|
+
if (!fs.exists(path))
|
|
334
|
+
return null;
|
|
335
|
+
const pid = lockPid(fs, path);
|
|
336
|
+
if (pid === null)
|
|
337
|
+
return null;
|
|
338
|
+
return probe(pid) === 'dead' ? null : pid;
|
|
339
|
+
}
|
|
263
340
|
function lockPid(fs, path) {
|
|
264
341
|
try {
|
|
265
342
|
const o = JSON.parse(fs.read(path));
|