@withbuddi/buddi 0.1.0-pre.39 → 0.1.0-pre.41
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/extension/manifest.json +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/args.d.ts +2 -0
- package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/args.js +11 -2
- package/node_modules/@buddi/cli/dist/args.js.map +1 -1
- package/node_modules/@buddi/cli/dist/backup/index.d.ts +3 -1
- package/node_modules/@buddi/cli/dist/backup/index.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/backup/index.js +16 -1
- package/node_modules/@buddi/cli/dist/backup/index.js.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +5 -3
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.d.ts +4 -1
- package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +41 -3
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/mode.d.ts +41 -0
- package/node_modules/@buddi/cli/dist/mode.d.ts.map +1 -0
- package/node_modules/@buddi/cli/dist/mode.js +103 -0
- package/node_modules/@buddi/cli/dist/mode.js.map +1 -0
- package/node_modules/@buddi/cli/dist/paths.d.ts +13 -1
- package/node_modules/@buddi/cli/dist/paths.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/paths.js +23 -2
- package/node_modules/@buddi/cli/dist/paths.js.map +1 -1
- package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts +12 -2
- package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/uninstall-cmd.js +63 -12
- package/node_modules/@buddi/cli/dist/uninstall-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/dist/vault-cmd.d.ts +3 -0
- package/node_modules/@buddi/cli/dist/vault-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/vault-cmd.js +26 -5
- package/node_modules/@buddi/cli/dist/vault-cmd.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/uninstall.d.ts +18 -0
- package/node_modules/@buddi/core/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/uninstall.js +47 -0
- package/node_modules/@buddi/core/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/codex-accounts.js +4 -4
- package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +31 -0
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +20 -2
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts +11 -0
- package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/cli-tool.js +27 -0
- package/node_modules/@buddi/gateway/dist/web/cli-tool.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts +14 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js +22 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/lock.d.ts +12 -0
- package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/lock.js +13 -0
- package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +41 -6
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +91 -15
- package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts +64 -0
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js +112 -0
- package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +78 -9
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/take-on.d.ts +28 -3
- package/node_modules/@buddi/gateway/dist/web/take-on.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/take-on.js +48 -3
- package/node_modules/@buddi/gateway/dist/web/take-on.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts +36 -0
- package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/uninstall.js +116 -0
- package/node_modules/@buddi/gateway/dist/web/uninstall.js.map +1 -0
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/app-layout.d.ts +4 -0
- package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/app-layout.js +6 -0
- package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
- package/node_modules/@buddi/install/dist/cli-shim.d.ts +76 -0
- package/node_modules/@buddi/install/dist/cli-shim.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/cli-shim.js +215 -0
- package/node_modules/@buddi/install/dist/cli-shim.js.map +1 -0
- package/node_modules/@buddi/install/dist/environment.d.ts +90 -1
- package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/environment.js +216 -3
- package/node_modules/@buddi/install/dist/environment.js.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +140 -5
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts +86 -0
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/product-uninstall.js +150 -0
- package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -0
- package/node_modules/@buddi/install/dist/supervisor.d.ts +16 -1
- package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/supervisor.js +191 -10
- package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.js +84 -13
- package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +6 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/codex-oauth.js +15 -0
- package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.d.ts +9 -2
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +117 -16
- package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/args.d.ts +2 -0
- package/packages/cli/dist/args.d.ts.map +1 -1
- package/packages/cli/dist/args.js +11 -2
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/backup/index.d.ts +3 -1
- package/packages/cli/dist/backup/index.d.ts.map +1 -1
- package/packages/cli/dist/backup/index.js +16 -1
- package/packages/cli/dist/backup/index.js.map +1 -1
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +5 -3
- package/packages/cli/dist/commands.js.map +1 -1
- package/packages/cli/dist/main.d.ts +4 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +41 -3
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/mode.d.ts +41 -0
- package/packages/cli/dist/mode.d.ts.map +1 -0
- package/packages/cli/dist/mode.js +103 -0
- package/packages/cli/dist/mode.js.map +1 -0
- package/packages/cli/dist/paths.d.ts +13 -1
- package/packages/cli/dist/paths.d.ts.map +1 -1
- package/packages/cli/dist/paths.js +23 -2
- package/packages/cli/dist/paths.js.map +1 -1
- package/packages/cli/dist/uninstall-cmd.d.ts +12 -2
- package/packages/cli/dist/uninstall-cmd.d.ts.map +1 -1
- package/packages/cli/dist/uninstall-cmd.js +63 -12
- package/packages/cli/dist/uninstall-cmd.js.map +1 -1
- package/packages/cli/dist/vault-cmd.d.ts +3 -0
- package/packages/cli/dist/vault-cmd.d.ts.map +1 -1
- package/packages/cli/dist/vault-cmd.js +26 -5
- package/packages/cli/dist/vault-cmd.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/uninstall.d.ts +18 -0
- package/packages/core/dist/uninstall.d.ts.map +1 -1
- package/packages/core/dist/uninstall.js +47 -0
- package/packages/core/dist/uninstall.js.map +1 -1
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/codex-accounts.d.ts +2 -0
- package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
- package/packages/gateway/dist/codex-accounts.js +4 -4
- package/packages/gateway/dist/codex-accounts.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +31 -0
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +20 -2
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/cli-tool.d.ts +11 -0
- package/packages/gateway/dist/web/cli-tool.d.ts.map +1 -0
- package/packages/gateway/dist/web/cli-tool.js +27 -0
- package/packages/gateway/dist/web/cli-tool.js.map +1 -0
- package/packages/gateway/dist/web/extension.d.ts +14 -0
- package/packages/gateway/dist/web/extension.d.ts.map +1 -1
- package/packages/gateway/dist/web/extension.js +22 -1
- package/packages/gateway/dist/web/extension.js.map +1 -1
- package/packages/gateway/dist/web/lock.d.ts +12 -0
- package/packages/gateway/dist/web/lock.d.ts.map +1 -1
- package/packages/gateway/dist/web/lock.js +13 -0
- package/packages/gateway/dist/web/lock.js.map +1 -1
- package/packages/gateway/dist/web/onboarding.d.ts +41 -6
- package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/packages/gateway/dist/web/onboarding.js +91 -15
- package/packages/gateway/dist/web/onboarding.js.map +1 -1
- package/packages/gateway/dist/web/passphrase-notice.d.ts +64 -0
- package/packages/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
- package/packages/gateway/dist/web/passphrase-notice.js +112 -0
- package/packages/gateway/dist/web/passphrase-notice.js.map +1 -0
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +78 -9
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/take-on.d.ts +28 -3
- package/packages/gateway/dist/web/take-on.d.ts.map +1 -1
- package/packages/gateway/dist/web/take-on.js +48 -3
- package/packages/gateway/dist/web/take-on.js.map +1 -1
- package/packages/gateway/dist/web/uninstall.d.ts +36 -0
- package/packages/gateway/dist/web/uninstall.d.ts.map +1 -0
- package/packages/gateway/dist/web/uninstall.js +116 -0
- package/packages/gateway/dist/web/uninstall.js.map +1 -0
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/app-layout.d.ts +4 -0
- package/packages/install/dist/app-layout.d.ts.map +1 -1
- package/packages/install/dist/app-layout.js +6 -0
- package/packages/install/dist/app-layout.js.map +1 -1
- package/packages/install/dist/cli-shim.d.ts +76 -0
- package/packages/install/dist/cli-shim.d.ts.map +1 -0
- package/packages/install/dist/cli-shim.js +215 -0
- package/packages/install/dist/cli-shim.js.map +1 -0
- package/packages/install/dist/environment.d.ts +90 -1
- package/packages/install/dist/environment.d.ts.map +1 -1
- package/packages/install/dist/environment.js +216 -3
- package/packages/install/dist/environment.js.map +1 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +140 -5
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/product-uninstall.d.ts +86 -0
- package/packages/install/dist/product-uninstall.d.ts.map +1 -0
- package/packages/install/dist/product-uninstall.js +150 -0
- package/packages/install/dist/product-uninstall.js.map +1 -0
- package/packages/install/dist/supervisor.d.ts +16 -1
- package/packages/install/dist/supervisor.d.ts.map +1 -1
- package/packages/install/dist/supervisor.js +191 -10
- package/packages/install/dist/supervisor.js.map +1 -1
- package/packages/install/dist/uninstall.d.ts +20 -1
- package/packages/install/dist/uninstall.d.ts.map +1 -1
- package/packages/install/dist/uninstall.js +84 -13
- package/packages/install/dist/uninstall.js.map +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/codex-oauth.d.ts +6 -0
- package/packages/runtime/dist/codex-oauth.d.ts.map +1 -1
- package/packages/runtime/dist/codex-oauth.js +15 -0
- package/packages/runtime/dist/codex-oauth.js.map +1 -1
- package/packages/runtime/dist/openai.d.ts +9 -2
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +117 -16
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/web/dist/assets/index-BkxHX_8g.js +146 -0
- package/packages/web/dist/assets/{index-DYfeUW-0.css → index-D2rOodlH.css} +1 -1
- package/packages/web/dist/assets/{lottie_light-BFAMYgLA.js → lottie_light-D-P1tn3V.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/packages/web/dist/assets/index-vpc904_b.js +0 -146
|
@@ -9,11 +9,155 @@
|
|
|
9
9
|
* Node's own standard library plus `dotenv`.
|
|
10
10
|
*/
|
|
11
11
|
import { mkdir, readFile, writeFile, rename, open, stat, unlink } from 'node:fs/promises';
|
|
12
|
-
import { existsSync, readdirSync, constants } from 'node:fs';
|
|
12
|
+
import { existsSync, readdirSync, readFileSync, rmSync, constants } from 'node:fs';
|
|
13
13
|
import { randomBytes, createHash, createHmac } from 'node:crypto';
|
|
14
14
|
import os from 'node:os';
|
|
15
15
|
import path from 'node:path';
|
|
16
16
|
import net from 'node:net';
|
|
17
|
+
import { execFileSync } from 'node:child_process';
|
|
18
|
+
/** The one line the app and the CLI say about a moved port. */
|
|
19
|
+
export function portMovedLines(moved) {
|
|
20
|
+
if (!moved)
|
|
21
|
+
return [];
|
|
22
|
+
const lines = [];
|
|
23
|
+
if (moved.web)
|
|
24
|
+
lines.push(`Port ${moved.web.from} was taken by another program; buddi now listens on ${moved.web.to}.`);
|
|
25
|
+
if (moved.db)
|
|
26
|
+
lines.push(`Port ${moved.db.from} was taken by another program; buddi's database now uses ${moved.db.to}.`);
|
|
27
|
+
return lines;
|
|
28
|
+
}
|
|
29
|
+
/** Is this port free to listen on at 127.0.0.1 right now? */
|
|
30
|
+
export async function portFree(port) {
|
|
31
|
+
const server = net.createServer();
|
|
32
|
+
try {
|
|
33
|
+
await new Promise((resolve, reject) => { server.once('error', reject); server.listen(port, '127.0.0.1', () => resolve()); });
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (errorCode(error) === 'EADDRINUSE' || errorCode(error) === 'EACCES')
|
|
38
|
+
return false;
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
if (server.listening)
|
|
43
|
+
await new Promise(resolve => server.close(resolve));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The recorded ports, checked at a start: one another program has taken is
|
|
48
|
+
* replaced with a free one, and the state says so. Returns the state to
|
|
49
|
+
* write, or undefined when nothing moved.
|
|
50
|
+
*/
|
|
51
|
+
export async function movePortsIfTaken(state, deps) {
|
|
52
|
+
const tries = deps.tries ?? 5;
|
|
53
|
+
const taken = async (port) => {
|
|
54
|
+
for (let i = 0; i < tries; i++) {
|
|
55
|
+
if (await deps.free(port))
|
|
56
|
+
return false;
|
|
57
|
+
if (i < tries - 1)
|
|
58
|
+
await deps.sleep(1000);
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
};
|
|
62
|
+
const moved = { at: deps.now().toISOString() };
|
|
63
|
+
let webPort = state.webPort, dbPort = state.dbPort;
|
|
64
|
+
if (await taken(webPort) && !(deps.stopOwnGateway && await deps.stopOwnGateway() && !(await taken(webPort)))) {
|
|
65
|
+
let to = await deps.pick();
|
|
66
|
+
while (to === dbPort)
|
|
67
|
+
to = await deps.pick();
|
|
68
|
+
moved.web = { from: webPort, to };
|
|
69
|
+
webPort = to;
|
|
70
|
+
}
|
|
71
|
+
if (state.database === 'managed' && deps.ownClusterPort() !== dbPort && await taken(dbPort)) {
|
|
72
|
+
let to = await deps.pick();
|
|
73
|
+
while (to === webPort)
|
|
74
|
+
to = await deps.pick();
|
|
75
|
+
moved.db = { from: dbPort, to };
|
|
76
|
+
dbPort = to;
|
|
77
|
+
}
|
|
78
|
+
if (!moved.web && !moved.db)
|
|
79
|
+
return undefined;
|
|
80
|
+
return { ...state, webPort, dbPort, portMoved: moved };
|
|
81
|
+
}
|
|
82
|
+
/** Where the supervisor records its gateway's pid while it runs, beside `supervisor.lock`. */
|
|
83
|
+
export const GATEWAY_PID_FILE = 'gateway.pid';
|
|
84
|
+
function defaultOrphanDeps(data) {
|
|
85
|
+
const file = path.join(data, GATEWAY_PID_FILE);
|
|
86
|
+
return {
|
|
87
|
+
read: () => { try {
|
|
88
|
+
return readFileSync(file, 'utf8');
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return undefined;
|
|
92
|
+
} },
|
|
93
|
+
alive: pid => { try {
|
|
94
|
+
process.kill(pid, 0);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
return errorCode(e) === 'EPERM';
|
|
99
|
+
} },
|
|
100
|
+
command: pid => {
|
|
101
|
+
if (process.platform === 'win32')
|
|
102
|
+
return undefined;
|
|
103
|
+
try {
|
|
104
|
+
return execFileSync('ps', ['-o', 'command=', '-p', String(pid)], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
signal: (pid, signal) => { try {
|
|
111
|
+
process.kill(pid, signal);
|
|
112
|
+
}
|
|
113
|
+
catch { /* gone already */ } },
|
|
114
|
+
remove: () => { rmSync(file, { force: true }); },
|
|
115
|
+
sleep: ms => new Promise(resolve => setTimeout(resolve, ms)),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* This installation's gateway, still running after its supervisor died: the
|
|
120
|
+
* pid `gateway.pid` records, if it is alive and still a buddi gateway (the
|
|
121
|
+
* pid was not reused). Stopped (SIGTERM, then SIGKILL) so the next start can
|
|
122
|
+
* have its port back. True when one was stopped.
|
|
123
|
+
*/
|
|
124
|
+
export async function stopOrphanGateway(data, deps = defaultOrphanDeps(data)) {
|
|
125
|
+
const pid = Number((deps.read() ?? '').trim());
|
|
126
|
+
if (!Number.isInteger(pid) || pid <= 0 || pid === process.pid)
|
|
127
|
+
return false;
|
|
128
|
+
if (!deps.alive(pid) || !(deps.command(pid) ?? '').includes('__gateway')) {
|
|
129
|
+
deps.remove();
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
deps.signal(pid, 'SIGTERM');
|
|
133
|
+
const grace = deps.graceMs ?? 10_000;
|
|
134
|
+
for (let waited = 0; waited < grace && deps.alive(pid); waited += 250)
|
|
135
|
+
await deps.sleep(250);
|
|
136
|
+
if (deps.alive(pid))
|
|
137
|
+
deps.signal(pid, 'SIGKILL');
|
|
138
|
+
deps.remove();
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
/** The keychain namespace of the installation in `data`: `buddi.install.<sha256(data)[:20]>`. */
|
|
142
|
+
export function vaultServiceFor(data) {
|
|
143
|
+
return `buddi.install.${createHash('sha256').update(data).digest('hex').slice(0, 20)}`;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Does `installation.json` name a different installation than the one at
|
|
147
|
+
* hand? The sentence that says so, or undefined when it matches (or is too
|
|
148
|
+
* old to say).
|
|
149
|
+
*/
|
|
150
|
+
export function identityMismatch(state, data, vaultService) {
|
|
151
|
+
if (!state)
|
|
152
|
+
return undefined;
|
|
153
|
+
if (state.dataDir !== undefined && path.resolve(state.dataDir) !== path.resolve(data)) {
|
|
154
|
+
return `${path.join(data, 'installation.json')} was written for the installation in ${state.dataDir}, not ${data}.`;
|
|
155
|
+
}
|
|
156
|
+
if (state.vaultService !== undefined && vaultService !== undefined && state.vaultService !== vaultService) {
|
|
157
|
+
return `${path.join(data, 'installation.json')} names the keychain namespace ${state.vaultService}, but this run would use ${vaultService}.`;
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
17
161
|
function failure(error) {
|
|
18
162
|
return (error ?? {});
|
|
19
163
|
}
|
|
@@ -226,7 +370,7 @@ export async function environment(root, env = process.env) {
|
|
|
226
370
|
if (settings !== undefined)
|
|
227
371
|
populate(env, parse(settings));
|
|
228
372
|
// A separate keychain namespace prevents a test or second install sharing credentials.
|
|
229
|
-
env.BUDDI_VAULT_SERVICE =
|
|
373
|
+
env.BUDDI_VAULT_SERVICE = vaultServiceFor(data);
|
|
230
374
|
env.BUDDI_VAULT_FILE = path.join(data, 'vault.json');
|
|
231
375
|
if ((env.BUDDI_VAULT || (process.platform === 'darwin' ? 'keychain' : 'file')) === 'file') {
|
|
232
376
|
const keyFile = path.join(data, 'vault-key');
|
|
@@ -307,6 +451,29 @@ export async function acquireLock(data) {
|
|
|
307
451
|
}
|
|
308
452
|
throw new Error('Could not acquire the installation lock.');
|
|
309
453
|
}
|
|
454
|
+
/** `uninstall.json` (product-uninstall.ts's UNINSTALL_REQUEST), named here so this module imports nothing of buddi's. */
|
|
455
|
+
export const UNINSTALL_REQUEST_FILE = 'uninstall.json';
|
|
456
|
+
/**
|
|
457
|
+
* Has the installation in `data` been moved here from the folder its
|
|
458
|
+
* `installation.json` names? Only when the folder holds a managed cluster
|
|
459
|
+
* (`postgres/PG_VERSION`) and this process holds its `supervisor.lock`: a
|
|
460
|
+
* stray file in some other folder never takes the identity.
|
|
461
|
+
*/
|
|
462
|
+
export function movedHere(state, data, pid = process.pid) {
|
|
463
|
+
if (state.dataDir === undefined || path.resolve(state.dataDir) === path.resolve(data))
|
|
464
|
+
return false;
|
|
465
|
+
if (!existsSync(path.join(data, 'postgres', 'PG_VERSION')))
|
|
466
|
+
return false;
|
|
467
|
+
try {
|
|
468
|
+
return readFileSync(path.join(data, 'supervisor.lock'), 'utf8').trim() === String(pid);
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
function identity(data) {
|
|
475
|
+
return { kind: 'packaged', dataDir: path.resolve(data), vaultService: vaultServiceFor(path.resolve(data)) };
|
|
476
|
+
}
|
|
310
477
|
export async function initialize(ctx) {
|
|
311
478
|
// `incoming` is where the dashboard writes an uploaded archive, and the one
|
|
312
479
|
// directory the control socket accepts a path inside.
|
|
@@ -326,7 +493,53 @@ export async function initialize(ctx) {
|
|
|
326
493
|
let dbPort = await freePort();
|
|
327
494
|
while (dbPort === webPort)
|
|
328
495
|
dbPort = await freePort();
|
|
329
|
-
ctx.state = { version: 1, database: ctx.env.DATABASE_URL ? 'external' : 'managed', webPort, dbPort, phase: 'provisioning' };
|
|
496
|
+
ctx.state = { version: 1, database: ctx.env.DATABASE_URL ? 'external' : 'managed', webPort, dbPort, phase: 'provisioning', ...identity(ctx.data) };
|
|
497
|
+
await atomicJson(path.join(ctx.data, 'installation.json'), ctx.state);
|
|
498
|
+
}
|
|
499
|
+
else {
|
|
500
|
+
// A recorded port another program took since: moved, and said (portMovedLines).
|
|
501
|
+
const movedState = await movePortsIfTaken(ctx.state, {
|
|
502
|
+
free: portFree,
|
|
503
|
+
pick: () => freePort(),
|
|
504
|
+
ownClusterPort: () => {
|
|
505
|
+
const pid = (() => { try {
|
|
506
|
+
return readFileSync(path.join(ctx.data, 'postgres', 'postmaster.pid'), 'utf8');
|
|
507
|
+
}
|
|
508
|
+
catch {
|
|
509
|
+
return '';
|
|
510
|
+
} })();
|
|
511
|
+
const port = Number(pid.split('\n')[3]);
|
|
512
|
+
return Number.isInteger(port) && port > 0 ? port : undefined;
|
|
513
|
+
},
|
|
514
|
+
stopOwnGateway: async () => {
|
|
515
|
+
const stopped = await stopOrphanGateway(ctx.data);
|
|
516
|
+
if (stopped)
|
|
517
|
+
console.error('supervisor: stopped a gateway of this installation left running by a supervisor that did not exit cleanly.');
|
|
518
|
+
return stopped;
|
|
519
|
+
},
|
|
520
|
+
sleep: ms => new Promise(resolve => setTimeout(resolve, ms)),
|
|
521
|
+
now: () => new Date(),
|
|
522
|
+
});
|
|
523
|
+
if (movedState) {
|
|
524
|
+
ctx.state = movedState;
|
|
525
|
+
await atomicJson(path.join(ctx.data, 'installation.json'), ctx.state);
|
|
526
|
+
for (const line of portMovedLines(movedState.portMoved))
|
|
527
|
+
console.error(`supervisor: ${line}`);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
if (movedHere(ctx.state, ctx.data)) {
|
|
531
|
+
// The folder was moved or restored to a new path: it has this installation's
|
|
532
|
+
// cluster and this supervisor holds its lock, so it is this installation.
|
|
533
|
+
// The identity follows it (or uninstall would refuse it for ever).
|
|
534
|
+
console.error(`supervisor: ${path.join(ctx.data, 'installation.json')} was written for ${ctx.state.dataDir}; this folder is now at ${path.resolve(ctx.data)}, so it says so from now on (keychain namespace ${vaultServiceFor(path.resolve(ctx.data))}).`);
|
|
535
|
+
ctx.state = { ...ctx.state, ...identity(ctx.data) };
|
|
536
|
+
await atomicJson(path.join(ctx.data, 'installation.json'), ctx.state);
|
|
537
|
+
}
|
|
538
|
+
// A Remove buddi request the app did not read (it deletes it when it does) is never acted on later.
|
|
539
|
+
rmSync(path.join(ctx.data, UNINSTALL_REQUEST_FILE), { force: true });
|
|
540
|
+
if (ctx.state.kind === undefined || ctx.state.dataDir === undefined || ctx.state.vaultService === undefined) {
|
|
541
|
+
// An installation provisioned before the file said who it is: said now, once.
|
|
542
|
+
ctx.state = { ...ctx.state, ...identity(ctx.data) };
|
|
330
543
|
await atomicJson(path.join(ctx.data, 'installation.json'), ctx.state);
|
|
331
544
|
}
|
|
332
545
|
ctx.env.BUDDI_WEB_PORT = String(ctx.state.webPort);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAiC3B,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,CAAC,KAAK,IAAI,EAAE,CAAmB,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAQ,KAA2C,EAAE,IAAI,CAAC;AAC5D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACpE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;SAC7H,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAW,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAA+B,EAAE,SAAyB,SAAS,EAAE,OAAO,GAAG,MAAM;IACnH,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO;IAChF,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa,EAAE,UAAwB,KAAK;IAC7F,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,IAAI,2BAA2B,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzJ,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,qBAAqB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe,EAAE,CAAC,OAAO,EAAE;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAErD,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAE,OAAe,EAAE,CAAC,OAAO,EAAE;IAC7G,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9H,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAmB,EAAE,IAAY;IACvE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAmB,EAAE,MAAc,EAAE,KAAa,EAAE,KAAa;IACvG,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC;IAAC,CAAC;IACpF,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YAAE,MAAM,KAAK,CAAC;IAC7H,CAAC;IACD,qEAAqE;IACrE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QACrC,SAAS,CAAC;YACR,IAAI,CAAC;gBAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YACjE,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAAE,MAAM;gBACtG,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;YAC9H,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,IAAI,EAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,oDAAoD,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,mCAAmC,CAAC,CAAC;QAClH,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAqC,OAAO,CAAC,QAAQ,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAE,OAAe,EAAE,CAAC,OAAO,EAAE;IACrJ,IAAI,GAAG,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7G,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAAC,WAAqC,OAAO,CAAC,QAAQ,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAE,OAAe,EAAE,CAAC,OAAO,EAAE;IACzJ,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IACxF,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;IACrH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;AACrF,CAAC;AAYD,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC;QAAC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAyB,EAAE;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,IAAI,GAAG,CAAC,wBAAwB;QAAE,OAAO,GAAG,CAAC,wBAAwB,CAAC;IACtE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACjD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACpG,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,KAAc;IAC3D,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACzC,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAS,GAAG,CAAC;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxI,OAAQ,MAAM,CAAC,OAAO,EAAkB,CAAC,IAAI,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,YAAY;YAAE,OAAO,QAAQ,EAAE,CAAC;QACtE,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QAAC,IAAI,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC;AAC1F,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAyB,OAAO,CAAC,GAAG;IAClF,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnD,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAC5D,GAAG,CAAC,sBAAsB,GAAG,GAAG,CAAC;IACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,wBAAwB,GAAG,QAAQ,CAAC;IACpE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,GAA6B,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,uFAAuF;IACvF,GAAG,CAAC,mBAAmB,GAAG,iBAAiB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC1G,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,KAAoC,CAAC;IACzC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAsB,CAAC;QAC3E,oEAAoE;QACpE,8CAA8C;QAC9C,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC3G,CAAC;QACD,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,mFAAmF;IACnF,GAAG,CAAC,cAAc,GAAG,WAAW,CAAC;IACjC,OAAO,GAAG,CAAC,uBAAuB,CAAC;IACnC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAChD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,KAAK,IAAI,EAAE;gBAChB,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3E,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YAC/C,uEAAuE;YACvE,oEAAoE;YACpE,IAAI,QAAoB,CAAC;YACzB,IAAI,CAAC;gBAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAAC,CAAC;YAC/D,MAAM,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;YAAC,CAAC;YACxI,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjE,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;oBAAC,CAAC;gBAC/E,CAAC;qBAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC3D,CAAC;gBACD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,KAAK;wBAAE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;oBACvG,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;oBAAS,CAAC;gBAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAC,MAAM,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;YAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAmB;IAClD,4EAA4E;IAC5E,sDAAsD;IACtD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,SAAS,CAAC,OAAO,EAAE,sDAAsD,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAC1H,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpF,GAAG,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;QACvE,IAAI,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,KAAK,OAAO;YAAE,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QACrD,GAAG,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAC5H,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":";AA0BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AA+ExD,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAM5D"}
|
|
@@ -11,16 +11,17 @@ import path from 'node:path';
|
|
|
11
11
|
import { fileURLToPath } from 'node:url';
|
|
12
12
|
import { spawn, execFile } from 'node:child_process';
|
|
13
13
|
import { request } from 'node:http';
|
|
14
|
-
import { open, mkdir, writeFile, rm, rename, copyFile } from 'node:fs/promises';
|
|
14
|
+
import { open, mkdir, writeFile, rm, rename, copyFile, chmod } from 'node:fs/promises';
|
|
15
15
|
import os from 'node:os';
|
|
16
16
|
import { promisify } from 'node:util';
|
|
17
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
18
|
-
import { environment, dashboardReady, launchAgentLabel, launchAgentPlist, reloadLaunchAgent, nativeEnvironment, reloadSystemdUnit, systemdUnitPath, atomicJson, browsersDir, SERVICE_UNIT_VAR } from './environment.js';
|
|
17
|
+
import { existsSync, readFileSync, realpathSync } from 'node:fs';
|
|
18
|
+
import { environment, identityMismatch, portMovedLines, dashboardReady, launchAgentLabel, launchAgentPlist, reloadLaunchAgent, nativeEnvironment, reloadSystemdUnit, systemdUnitPath, atomicJson, browsersDir, SERVICE_UNIT_VAR } from './environment.js';
|
|
19
19
|
import { supervise, supervisorSocket } from './supervisor.js';
|
|
20
20
|
import { keptPluginDataLine, readKeptPluginData } from './kept-data.js';
|
|
21
21
|
import { readProfileZone, timezoneLine } from './doctor-timezone.js';
|
|
22
22
|
import { installedVersion, readUpgradeState, upgradeDoctorLines, versionView } from './upgrade.js';
|
|
23
|
-
import { appLayout, insideAppBundle } from './app-layout.js';
|
|
23
|
+
import { APP_RUNNING_LINE, appLayout, insideAppBundle, runsAppCopy } from './app-layout.js';
|
|
24
|
+
import { APP_BUNDLE_ID, SHIM_REFUSAL, SHIM_VAR, shimAction, shimDoctorLines, shimsFor } from './cli-shim.js';
|
|
24
25
|
const entry = fileURLToPath(import.meta.url);
|
|
25
26
|
// <root>/packages/install/dist/launcher.js — the installation root is three up.
|
|
26
27
|
const root = path.resolve(path.dirname(entry), '../../..');
|
|
@@ -94,6 +95,10 @@ async function ask(ctx, method, route, body) {
|
|
|
94
95
|
function isAppInstall(ctx) {
|
|
95
96
|
return appLayout(process.env) !== undefined || insideAppBundle(root) || root.startsWith(path.join(ctx.data, 'releases') + path.sep);
|
|
96
97
|
}
|
|
98
|
+
/** Does the supervisor answering run buddi.app's copy (the bundle's, or a release it installed)? */
|
|
99
|
+
function runsFromApp(status, ctx) {
|
|
100
|
+
return runsAppCopy(status.installRoot, ctx.data);
|
|
101
|
+
}
|
|
97
102
|
function withApp(view, ctx) {
|
|
98
103
|
return isAppInstall(ctx) ? { ...view, app: true } : view;
|
|
99
104
|
}
|
|
@@ -228,7 +233,21 @@ async function uninstall(ctx, rest) {
|
|
|
228
233
|
answers: () => control(ctx).then(() => true, () => false),
|
|
229
234
|
stopGateway: async () => { await control(ctx, 'stop'); },
|
|
230
235
|
backup: () => supervisedBackup(ctx),
|
|
231
|
-
|
|
236
|
+
},
|
|
237
|
+
// Read from the vault itself, never through the supervisor's route: that one makes a passphrase when there is none.
|
|
238
|
+
passphrase: async () => {
|
|
239
|
+
const stored = await vault?.get(core.BACKUP_PASSPHRASE_KEY);
|
|
240
|
+
return stored === null || stored === undefined || stored.trim() === '' ? undefined : core.normalizePassphrase(stored);
|
|
241
|
+
},
|
|
242
|
+
writePrivate: async (file, text) => {
|
|
243
|
+
await mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
|
|
244
|
+
await writeFile(file, text, { mode: 0o600 });
|
|
245
|
+
await chmod(file, 0o600);
|
|
246
|
+
},
|
|
247
|
+
copy: async (from, to) => { await mkdir(path.dirname(to), { recursive: true }); await copyFile(from, to); },
|
|
248
|
+
readState: () => {
|
|
249
|
+
const file = path.join(ctx.data, 'installation.json');
|
|
250
|
+
return existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : undefined;
|
|
232
251
|
},
|
|
233
252
|
supervisorPid: lockPid,
|
|
234
253
|
signal: (pid, signal) => { try {
|
|
@@ -261,6 +280,26 @@ async function uninstall(ctx, rest) {
|
|
|
261
280
|
},
|
|
262
281
|
}),
|
|
263
282
|
...(app === undefined ? {} : { app }),
|
|
283
|
+
...(() => {
|
|
284
|
+
const shimDeps = { home, exists: existsSync, read: (file) => { try {
|
|
285
|
+
return readFileSync(file, 'utf8');
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
return undefined;
|
|
289
|
+
} } };
|
|
290
|
+
const files = shimsFor(ctx.data, shimDeps);
|
|
291
|
+
if (files.length === 0)
|
|
292
|
+
return {};
|
|
293
|
+
return { shims: { files, remove: async (file) => {
|
|
294
|
+
try {
|
|
295
|
+
await rm(file, { force: true });
|
|
296
|
+
if (!existsSync(file))
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
catch { /* root's folder */ }
|
|
300
|
+
await exec('/usr/bin/osascript', ['-e', `do shell script ${JSON.stringify(`/bin/rm -f '${file.replace(/'/g, `'\\''`)}'`)} with administrator privileges`]);
|
|
301
|
+
} } };
|
|
302
|
+
})(),
|
|
264
303
|
sleep: ms => new Promise(resolve => setTimeout(resolve, ms)),
|
|
265
304
|
io: {
|
|
266
305
|
log: line => console.log(line),
|
|
@@ -382,6 +421,17 @@ async function restoreThroughSupervisor(ctx, rest) {
|
|
|
382
421
|
// The vault holds the passphrase of an archive this installation encrypted;
|
|
383
422
|
// `--passphrase` is for one that came from another machine.
|
|
384
423
|
let passphrase = flag('passphrase');
|
|
424
|
+
// `<archive>.passphrase.txt` beside it, which uninstall writes before the vault goes.
|
|
425
|
+
if (passphrase === undefined && name.endsWith('.age')) {
|
|
426
|
+
const { passphraseFileFor, passphraseFromFile } = await import('@buddi/core/uninstall');
|
|
427
|
+
for (const archive of [resolved, path.join(backups, name)]) {
|
|
428
|
+
const file = passphraseFileFor(archive);
|
|
429
|
+
if (passphrase === undefined && existsSync(file))
|
|
430
|
+
passphrase = passphraseFromFile(readFileSync(file, 'utf8'));
|
|
431
|
+
}
|
|
432
|
+
if (passphrase !== undefined)
|
|
433
|
+
console.log(`Using the passphrase in ${name}.passphrase.txt beside it.`);
|
|
434
|
+
}
|
|
385
435
|
if (passphrase === undefined && name.endsWith('.age')) {
|
|
386
436
|
passphrase = (await ask(ctx, 'GET', '/passphrase').catch(() => undefined))?.passphrase;
|
|
387
437
|
}
|
|
@@ -515,6 +565,12 @@ async function launchService(ctx, temporary) {
|
|
|
515
565
|
}
|
|
516
566
|
async function run() {
|
|
517
567
|
let ctx = await environment(root);
|
|
568
|
+
// A supervisor started through buddi.app's command line tool would compete with the app's own (cli-shim.ts).
|
|
569
|
+
if (args[0] === 'supervise' && process.platform === 'darwin' && (process.env[SHIM_VAR] ?? '').trim() !== '') {
|
|
570
|
+
console.error(`buddi: ${SHIM_REFUSAL}`);
|
|
571
|
+
process.exitCode = 2;
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
518
574
|
if (args[0] === 'supervise')
|
|
519
575
|
return supervise(ctx);
|
|
520
576
|
if (args[0] === '__gateway') {
|
|
@@ -536,6 +592,45 @@ async function run() {
|
|
|
536
592
|
}
|
|
537
593
|
// Help is the command table's, whatever the command: `buddi service status --help`.
|
|
538
594
|
const wantsHelp = args.some(arg => arg === '--help' || arg === '-h') || args[0] === 'help';
|
|
595
|
+
// A folder whose installation.json names another installation is not one to stop or remove from here.
|
|
596
|
+
const guarded = args[0] === 'uninstall' || (args[0] === 'service' && ['install', 'stop', 'uninstall'].includes(args[1]));
|
|
597
|
+
const mismatch = identityMismatch(ctx.state, ctx.data, ctx.env.BUDDI_VAULT_SERVICE);
|
|
598
|
+
if (!wantsHelp && guarded && mismatch !== undefined) {
|
|
599
|
+
console.error(`buddi: ${mismatch}`);
|
|
600
|
+
console.error("Run this from the app's menu, or set BUDDI_DATA_DIR to the installation you mean.");
|
|
601
|
+
process.exitCode = 2;
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
/*
|
|
605
|
+
* Through buddi.app's command line tool (cli-shim.ts): the app runs buddi
|
|
606
|
+
* here. Starting it opens the app (and waits for its supervisor) instead of
|
|
607
|
+
* installing a LaunchAgent that would compete with it; a service of its own
|
|
608
|
+
* is refused; everything else talks to the app's supervisor as usual.
|
|
609
|
+
*/
|
|
610
|
+
const viaShim = process.platform === 'darwin' && (process.env[SHIM_VAR] ?? '').trim() !== '';
|
|
611
|
+
if (viaShim && !wantsHelp) {
|
|
612
|
+
const action = shimAction(args);
|
|
613
|
+
if (action === 'refuse') {
|
|
614
|
+
console.error(`buddi: ${SHIM_REFUSAL}`);
|
|
615
|
+
process.exitCode = 2;
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
if (action === 'open-app' && !(await control(ctx).then(() => true, () => false))) {
|
|
619
|
+
console.log('Opening buddi.app.');
|
|
620
|
+
const app = (process.env[SHIM_VAR] ?? '').trim();
|
|
621
|
+
await exec('open', ['-b', APP_BUNDLE_ID], { env: nativeEnvironment(ctx.env) })
|
|
622
|
+
.catch(() => exec('open', [app], { env: nativeEnvironment(ctx.env) }));
|
|
623
|
+
const deadline = Date.now() + 120_000;
|
|
624
|
+
for (;;) {
|
|
625
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
626
|
+
ctx = await environment(root);
|
|
627
|
+
if (await control(ctx).then(() => true, () => false))
|
|
628
|
+
break;
|
|
629
|
+
if (Date.now() > deadline)
|
|
630
|
+
throw new Error(`buddi.app did not start buddi within two minutes. Open it from ${app}, and inspect ${path.join(ctx.data, 'logs/supervisor.log')}.`);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
539
634
|
if (!wantsHelp && args[0] === 'uninstall') {
|
|
540
635
|
process.exitCode = await uninstall(ctx, args.slice(1));
|
|
541
636
|
return;
|
|
@@ -555,6 +650,8 @@ async function run() {
|
|
|
555
650
|
}
|
|
556
651
|
// `--json`: the supervisor's own answer, for scripts (and the release smoke).
|
|
557
652
|
console.log(serviceJson ? JSON.stringify(status, null, 2) : serviceLine(status));
|
|
653
|
+
if (!serviceJson && status.portNotice)
|
|
654
|
+
console.log(status.portNotice);
|
|
558
655
|
if (status.gateway !== 'running' && args[1] !== 'stop')
|
|
559
656
|
process.exitCode = 1;
|
|
560
657
|
return;
|
|
@@ -576,6 +673,22 @@ async function run() {
|
|
|
576
673
|
return;
|
|
577
674
|
}
|
|
578
675
|
if (!wantsHelp && args[0] === 'doctor') {
|
|
676
|
+
// Which buddi answered, and from where: buddi.app's copy, a release it installed, or npm's.
|
|
677
|
+
const invoked = (() => { try {
|
|
678
|
+
return realpathSync(process.argv[1] ?? entry);
|
|
679
|
+
}
|
|
680
|
+
catch {
|
|
681
|
+
return entry;
|
|
682
|
+
} })();
|
|
683
|
+
console.log(`This buddi: ${invoked} (Node ${process.execPath})`);
|
|
684
|
+
console.log(`From: ${insideAppBundle(root) ? `buddi.app (${root.slice(0, root.indexOf('.app/') + 4)})` : root.startsWith(path.join(ctx.data, 'releases') + path.sep) ? `an update buddi.app installed (${root})` : `npm (${root})`}`);
|
|
685
|
+
for (const line of shimDoctorLines({ home: os.homedir(), exists: existsSync, read: file => { try {
|
|
686
|
+
return readFileSync(file, 'utf8');
|
|
687
|
+
}
|
|
688
|
+
catch {
|
|
689
|
+
return undefined;
|
|
690
|
+
} } }))
|
|
691
|
+
console.log(line);
|
|
579
692
|
console.log(`Data: ${ctx.data}`);
|
|
580
693
|
// What the vault is and what it protects, said the same way everywhere
|
|
581
694
|
// (install.md §4): the keychain on a Mac, the file beside its key elsewhere.
|
|
@@ -620,6 +733,15 @@ async function run() {
|
|
|
620
733
|
console.log('This is the latest version.');
|
|
621
734
|
return;
|
|
622
735
|
}
|
|
736
|
+
if (!wantsHelp && args[0] === 'upgrade' && !isAppInstall(ctx)) {
|
|
737
|
+
// npm's buddi in front of buddi.app's supervisor: the app updates buddi, not this command.
|
|
738
|
+
const status = await control(ctx).catch(() => undefined);
|
|
739
|
+
if (status !== undefined && runsFromApp(status, ctx)) {
|
|
740
|
+
console.log(APP_RUNNING_LINE);
|
|
741
|
+
console.log('Update buddi from the app: buddi → Update to … in the menu bar, or Settings → System.');
|
|
742
|
+
return;
|
|
743
|
+
}
|
|
744
|
+
}
|
|
623
745
|
if (!wantsHelp && args[0] === 'upgrade') {
|
|
624
746
|
// The checkout's `--no-backup` has no meaning here: the archive is the way
|
|
625
747
|
// back from a migration, and this path migrates under code it just installed.
|
|
@@ -679,9 +801,17 @@ async function run() {
|
|
|
679
801
|
await control(ctx, 'start');
|
|
680
802
|
running = true;
|
|
681
803
|
}
|
|
804
|
+
else if (runsFromApp(status, ctx) && (!isAppInstall(ctx) || viaShim)) {
|
|
805
|
+
// npm's buddi, with buddi.app running this installation: install no service, talk to the app's.
|
|
806
|
+
console.log(APP_RUNNING_LINE);
|
|
807
|
+
running = true;
|
|
808
|
+
}
|
|
682
809
|
}
|
|
683
810
|
catch { /* A missing supervisor is normal on first run. */ }
|
|
684
811
|
}
|
|
812
|
+
// The shim never installs a service beside buddi.app (it opened the app above).
|
|
813
|
+
if (!running && viaShim)
|
|
814
|
+
throw new Error('buddi.app is not running buddi. Open buddi.app, then run buddi again.');
|
|
685
815
|
if (!running) {
|
|
686
816
|
if (!relaunched) {
|
|
687
817
|
console.log('Starting Buddi. First run provisions a private Postgres cluster.');
|
|
@@ -716,6 +846,11 @@ async function run() {
|
|
|
716
846
|
throw new Error(`Gateway did not become ready. Inspect ${path.join(ctx.data, 'logs/gateway.log')}`);
|
|
717
847
|
await new Promise(resolve => setTimeout(resolve, 250));
|
|
718
848
|
}
|
|
849
|
+
// A recorded port another program took was moved at the last start: said here, once a day at most.
|
|
850
|
+
if (ctx.state?.portMoved && Date.now() - Date.parse(ctx.state.portMoved.at) < 24 * 60 * 60_000) {
|
|
851
|
+
for (const line of portMovedLines(ctx.state.portMoved))
|
|
852
|
+
console.log(line);
|
|
853
|
+
}
|
|
719
854
|
console.log(`Dashboard: ${terminalLink(url)}`);
|
|
720
855
|
console.log('The link is good for five minutes. Run buddi again for a fresh one.');
|
|
721
856
|
/*
|