@forgezero/agent 0.1.51 → 0.1.53
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/agent-heartbeat.js +1 -1
- package/dist/bootstrap.js +1 -1
- package/dist/community-rehearsal-host.js +15 -5
- package/dist/definition.js +13 -3
- package/dist/deploy-file.js +13 -3
- package/dist/fz-agent.js +16 -6
- package/dist/fz.js +1 -1
- package/dist/metal-bootstrap.js +1 -1
- package/dist/operator-bootstrap.js +1 -1
- package/dist/platform-fleet-verification.js +14 -4
- package/dist/provision.js +14 -4
- package/dist/software-helper.js +13 -3
- package/dist/software.d.ts +2 -0
- package/dist/software.js +15 -3
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/agent-heartbeat.js
CHANGED
package/dist/bootstrap.js
CHANGED
|
@@ -41,8 +41,17 @@ var UBUNTU_2604_X64 = [
|
|
|
41
41
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
42
42
|
];
|
|
43
43
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
44
|
-
var
|
|
45
|
-
|
|
44
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
45
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
46
|
+
let child;
|
|
47
|
+
try {
|
|
48
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
49
|
+
} catch (cause) {
|
|
50
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
51
|
+
if (failure)
|
|
52
|
+
return failure;
|
|
53
|
+
throw cause;
|
|
54
|
+
}
|
|
46
55
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
47
56
|
new Response(child.stdout).text(),
|
|
48
57
|
new Response(child.stderr).text(),
|
|
@@ -50,6 +59,7 @@ var run = async (argv, env = {}) => {
|
|
|
50
59
|
]);
|
|
51
60
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
52
61
|
};
|
|
62
|
+
var run = runSoftwareCommand;
|
|
53
63
|
var download = async (url, destination, sha256) => {
|
|
54
64
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
55
65
|
if (!response.ok)
|
|
@@ -78,7 +88,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
78
88
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
79
89
|
}
|
|
80
90
|
if (software === "arangodb") {
|
|
81
|
-
const binary = await run(["/usr/
|
|
91
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
82
92
|
if (!successful(binary, /3\.11\.14/))
|
|
83
93
|
return { ...binary, exitCode: 1 };
|
|
84
94
|
const [active, enabled] = await Promise.all([
|
|
@@ -377,7 +387,7 @@ function planCommunityRehearsalPrepare(request) {
|
|
|
377
387
|
const node = exactNode(request.node);
|
|
378
388
|
const releaseRoot = `${COMMUNITY_REHEARSAL_ROOT}/releases/${request.release}`;
|
|
379
389
|
return [
|
|
380
|
-
{ kind: "exec", argv: ["/usr/
|
|
390
|
+
{ kind: "exec", argv: ["/usr/sbin/arangod", "--version"] },
|
|
381
391
|
{ kind: "exec", argv: ["/usr/bin/systemctl", "stop", "forgezero-community-api.service"], accepted: [0, 5] },
|
|
382
392
|
{ kind: "exec", argv: ["/usr/bin/systemctl", "stop", "forgezero-rehearsal-db.service"], accepted: [0, 5] },
|
|
383
393
|
{ kind: "remove-tree", path: COMMUNITY_DATABASE_ROOT },
|
|
@@ -432,7 +442,7 @@ async function applyOperations(operations) {
|
|
|
432
442
|
const result = await exec(operation.argv, operation.stdin);
|
|
433
443
|
if (!(operation.accepted ?? [0]).includes(result.exitCode))
|
|
434
444
|
throw new Error(`${operation.argv[0]} failed (${result.exitCode}): ${result.output.trim()}`);
|
|
435
|
-
if (operation.argv[0] === "/usr/
|
|
445
|
+
if (operation.argv[0] === "/usr/sbin/arangod" && !result.output.split(/\r?\n/, 1)[0]?.includes(COMMUNITY_REHEARSAL_VERSION)) {
|
|
436
446
|
throw new Error(`community rehearsal requires ArangoDB ${COMMUNITY_REHEARSAL_VERSION}`);
|
|
437
447
|
}
|
|
438
448
|
}
|
package/dist/definition.js
CHANGED
|
@@ -41,8 +41,17 @@ var UBUNTU_2604_X64 = [
|
|
|
41
41
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
42
42
|
];
|
|
43
43
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
44
|
-
var
|
|
45
|
-
|
|
44
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
45
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
46
|
+
let child;
|
|
47
|
+
try {
|
|
48
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
49
|
+
} catch (cause) {
|
|
50
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
51
|
+
if (failure)
|
|
52
|
+
return failure;
|
|
53
|
+
throw cause;
|
|
54
|
+
}
|
|
46
55
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
47
56
|
new Response(child.stdout).text(),
|
|
48
57
|
new Response(child.stderr).text(),
|
|
@@ -50,6 +59,7 @@ var run = async (argv, env = {}) => {
|
|
|
50
59
|
]);
|
|
51
60
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
52
61
|
};
|
|
62
|
+
var run = runSoftwareCommand;
|
|
53
63
|
var download = async (url, destination, sha256) => {
|
|
54
64
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
55
65
|
if (!response.ok)
|
|
@@ -78,7 +88,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
78
88
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
79
89
|
}
|
|
80
90
|
if (software === "arangodb") {
|
|
81
|
-
const binary = await run(["/usr/
|
|
91
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
82
92
|
if (!successful(binary, /3\.11\.14/))
|
|
83
93
|
return { ...binary, exitCode: 1 };
|
|
84
94
|
const [active, enabled] = await Promise.all([
|
package/dist/deploy-file.js
CHANGED
|
@@ -41,8 +41,17 @@ var UBUNTU_2604_X64 = [
|
|
|
41
41
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
42
42
|
];
|
|
43
43
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
44
|
-
var
|
|
45
|
-
|
|
44
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
45
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
46
|
+
let child;
|
|
47
|
+
try {
|
|
48
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
49
|
+
} catch (cause) {
|
|
50
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
51
|
+
if (failure)
|
|
52
|
+
return failure;
|
|
53
|
+
throw cause;
|
|
54
|
+
}
|
|
46
55
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
47
56
|
new Response(child.stdout).text(),
|
|
48
57
|
new Response(child.stderr).text(),
|
|
@@ -50,6 +59,7 @@ var run = async (argv, env = {}) => {
|
|
|
50
59
|
]);
|
|
51
60
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
52
61
|
};
|
|
62
|
+
var run = runSoftwareCommand;
|
|
53
63
|
var download = async (url, destination, sha256) => {
|
|
54
64
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
55
65
|
if (!response.ok)
|
|
@@ -78,7 +88,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
78
88
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
79
89
|
}
|
|
80
90
|
if (software === "arangodb") {
|
|
81
|
-
const binary = await run(["/usr/
|
|
91
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
82
92
|
if (!successful(binary, /3\.11\.14/))
|
|
83
93
|
return { ...binary, exitCode: 1 };
|
|
84
94
|
const [active, enabled] = await Promise.all([
|
package/dist/fz-agent.js
CHANGED
|
@@ -4990,8 +4990,17 @@ var UBUNTU_2604_X64 = [
|
|
|
4990
4990
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
4991
4991
|
];
|
|
4992
4992
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
4993
|
-
var
|
|
4994
|
-
|
|
4993
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
4994
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
4995
|
+
let child;
|
|
4996
|
+
try {
|
|
4997
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
4998
|
+
} catch (cause) {
|
|
4999
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
5000
|
+
if (failure)
|
|
5001
|
+
return failure;
|
|
5002
|
+
throw cause;
|
|
5003
|
+
}
|
|
4995
5004
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
4996
5005
|
new Response(child.stdout).text(),
|
|
4997
5006
|
new Response(child.stderr).text(),
|
|
@@ -4999,6 +5008,7 @@ var run = async (argv, env = {}) => {
|
|
|
4999
5008
|
]);
|
|
5000
5009
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
5001
5010
|
};
|
|
5011
|
+
var run = runSoftwareCommand;
|
|
5002
5012
|
var download = async (url, destination, sha2562) => {
|
|
5003
5013
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
5004
5014
|
if (!response.ok)
|
|
@@ -5027,7 +5037,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
5027
5037
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
5028
5038
|
}
|
|
5029
5039
|
if (software === "arangodb") {
|
|
5030
|
-
const binary = await run(["/usr/
|
|
5040
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
5031
5041
|
if (!successful(binary, /3\.11\.14/))
|
|
5032
5042
|
return { ...binary, exitCode: 1 };
|
|
5033
5043
|
const [active, enabled] = await Promise.all([
|
|
@@ -7000,7 +7010,7 @@ function assertSupportedGuestImage(imageKey) {
|
|
|
7000
7010
|
}
|
|
7001
7011
|
|
|
7002
7012
|
// src/version.ts
|
|
7003
|
-
var VERSION = "0.1.
|
|
7013
|
+
var VERSION = "0.1.53";
|
|
7004
7014
|
|
|
7005
7015
|
// src/ssh-bootstrap.ts
|
|
7006
7016
|
class SshBootstrapError extends Error {
|
|
@@ -13342,7 +13352,7 @@ function planCommunityRehearsalPrepare(request) {
|
|
|
13342
13352
|
const node = exactNode(request.node);
|
|
13343
13353
|
const releaseRoot = `${COMMUNITY_REHEARSAL_ROOT}/releases/${request.release}`;
|
|
13344
13354
|
return [
|
|
13345
|
-
{ kind: "exec", argv: ["/usr/
|
|
13355
|
+
{ kind: "exec", argv: ["/usr/sbin/arangod", "--version"] },
|
|
13346
13356
|
{ kind: "exec", argv: ["/usr/bin/systemctl", "stop", "forgezero-community-api.service"], accepted: [0, 5] },
|
|
13347
13357
|
{ kind: "exec", argv: ["/usr/bin/systemctl", "stop", "forgezero-rehearsal-db.service"], accepted: [0, 5] },
|
|
13348
13358
|
{ kind: "remove-tree", path: COMMUNITY_DATABASE_ROOT },
|
|
@@ -13397,7 +13407,7 @@ async function applyOperations(operations) {
|
|
|
13397
13407
|
const result = await exec(operation.argv, operation.stdin);
|
|
13398
13408
|
if (!(operation.accepted ?? [0]).includes(result.exitCode))
|
|
13399
13409
|
throw new Error(`${operation.argv[0]} failed (${result.exitCode}): ${result.output.trim()}`);
|
|
13400
|
-
if (operation.argv[0] === "/usr/
|
|
13410
|
+
if (operation.argv[0] === "/usr/sbin/arangod" && !result.output.split(/\r?\n/, 1)[0]?.includes(COMMUNITY_REHEARSAL_VERSION)) {
|
|
13401
13411
|
throw new Error(`community rehearsal requires ArangoDB ${COMMUNITY_REHEARSAL_VERSION}`);
|
|
13402
13412
|
}
|
|
13403
13413
|
}
|
package/dist/fz.js
CHANGED
package/dist/metal-bootstrap.js
CHANGED
|
@@ -292,7 +292,7 @@ function systemdAgentEgressDirectives(loopbackTcpPorts = []) {
|
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
// src/version.ts
|
|
295
|
-
var VERSION = "0.1.
|
|
295
|
+
var VERSION = "0.1.53";
|
|
296
296
|
|
|
297
297
|
// src/otel-collector.ts
|
|
298
298
|
var FORGEZERO_OTEL_COLLECTOR_UNIT = "forgezero-otel-collector.service";
|
|
@@ -719,8 +719,17 @@ var UBUNTU_2604_X64 = [
|
|
|
719
719
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
720
720
|
];
|
|
721
721
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
722
|
-
var
|
|
723
|
-
|
|
722
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
723
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
724
|
+
let child;
|
|
725
|
+
try {
|
|
726
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
727
|
+
} catch (cause) {
|
|
728
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
729
|
+
if (failure)
|
|
730
|
+
return failure;
|
|
731
|
+
throw cause;
|
|
732
|
+
}
|
|
724
733
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
725
734
|
new Response(child.stdout).text(),
|
|
726
735
|
new Response(child.stderr).text(),
|
|
@@ -728,6 +737,7 @@ var run = async (argv, env = {}) => {
|
|
|
728
737
|
]);
|
|
729
738
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
730
739
|
};
|
|
740
|
+
var run = runSoftwareCommand;
|
|
731
741
|
var download = async (url, destination, sha256) => {
|
|
732
742
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
733
743
|
if (!response.ok)
|
|
@@ -756,7 +766,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
756
766
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
757
767
|
}
|
|
758
768
|
if (software === "arangodb") {
|
|
759
|
-
const binary = await run(["/usr/
|
|
769
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
760
770
|
if (!successful(binary, /3\.11\.14/))
|
|
761
771
|
return { ...binary, exitCode: 1 };
|
|
762
772
|
const [active, enabled] = await Promise.all([
|
|
@@ -1697,7 +1707,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
|
|
|
1697
1707
|
}
|
|
1698
1708
|
|
|
1699
1709
|
// src/version.ts
|
|
1700
|
-
var VERSION3 = "0.1.
|
|
1710
|
+
var VERSION3 = "0.1.53";
|
|
1701
1711
|
|
|
1702
1712
|
// src/egress-policy.ts
|
|
1703
1713
|
import { realpathSync as realpathSync2 } from "node:fs";
|
package/dist/provision.js
CHANGED
|
@@ -719,8 +719,17 @@ var UBUNTU_2604_X64 = [
|
|
|
719
719
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
720
720
|
];
|
|
721
721
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
722
|
-
var
|
|
723
|
-
|
|
722
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
723
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
724
|
+
let child;
|
|
725
|
+
try {
|
|
726
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
727
|
+
} catch (cause) {
|
|
728
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
729
|
+
if (failure)
|
|
730
|
+
return failure;
|
|
731
|
+
throw cause;
|
|
732
|
+
}
|
|
724
733
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
725
734
|
new Response(child.stdout).text(),
|
|
726
735
|
new Response(child.stderr).text(),
|
|
@@ -728,6 +737,7 @@ var run = async (argv, env = {}) => {
|
|
|
728
737
|
]);
|
|
729
738
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
730
739
|
};
|
|
740
|
+
var run = runSoftwareCommand;
|
|
731
741
|
var download = async (url, destination, sha256) => {
|
|
732
742
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
733
743
|
if (!response.ok)
|
|
@@ -756,7 +766,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
756
766
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
757
767
|
}
|
|
758
768
|
if (software === "arangodb") {
|
|
759
|
-
const binary = await run(["/usr/
|
|
769
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
760
770
|
if (!successful(binary, /3\.11\.14/))
|
|
761
771
|
return { ...binary, exitCode: 1 };
|
|
762
772
|
const [active, enabled] = await Promise.all([
|
|
@@ -1697,7 +1707,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
|
|
|
1697
1707
|
}
|
|
1698
1708
|
|
|
1699
1709
|
// src/version.ts
|
|
1700
|
-
var VERSION3 = "0.1.
|
|
1710
|
+
var VERSION3 = "0.1.53";
|
|
1701
1711
|
|
|
1702
1712
|
// src/egress-policy.ts
|
|
1703
1713
|
import { realpathSync as realpathSync2 } from "node:fs";
|
package/dist/software-helper.js
CHANGED
|
@@ -41,8 +41,17 @@ var UBUNTU_2604_X64 = [
|
|
|
41
41
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
42
42
|
];
|
|
43
43
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
44
|
-
var
|
|
45
|
-
|
|
44
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
45
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
46
|
+
let child;
|
|
47
|
+
try {
|
|
48
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
49
|
+
} catch (cause) {
|
|
50
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
51
|
+
if (failure)
|
|
52
|
+
return failure;
|
|
53
|
+
throw cause;
|
|
54
|
+
}
|
|
46
55
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
47
56
|
new Response(child.stdout).text(),
|
|
48
57
|
new Response(child.stderr).text(),
|
|
@@ -50,6 +59,7 @@ var run = async (argv, env = {}) => {
|
|
|
50
59
|
]);
|
|
51
60
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
52
61
|
};
|
|
62
|
+
var run = runSoftwareCommand;
|
|
53
63
|
var download = async (url, destination, sha256) => {
|
|
54
64
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
55
65
|
if (!response.ok)
|
|
@@ -78,7 +88,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
78
88
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
79
89
|
}
|
|
80
90
|
if (software === "arangodb") {
|
|
81
|
-
const binary = await run(["/usr/
|
|
91
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
82
92
|
if (!successful(binary, /3\.11\.14/))
|
|
83
93
|
return { ...binary, exitCode: 1 };
|
|
84
94
|
const [active, enabled] = await Promise.all([
|
package/dist/software.d.ts
CHANGED
|
@@ -46,6 +46,8 @@ export declare const BUN_RELEASE_SHA256 = "951ee2aee855f08595aeec6225226a298d3fe
|
|
|
46
46
|
/** Public, command-free catalog. Root strategies remain private below. */
|
|
47
47
|
export declare const OS_CATALOG: readonly OsCatalogEntry[];
|
|
48
48
|
export declare const SOFTWARE_CATALOG: readonly SoftwareCatalogEntry[];
|
|
49
|
+
export declare const softwareSpawnFailure: (cause: unknown, argv: readonly string[]) => SoftwareCommandResult | undefined;
|
|
50
|
+
export declare const runSoftwareCommand: (argv: readonly string[], env?: Record<string, string>) => Promise<SoftwareCommandResult>;
|
|
49
51
|
/** Closed, fixed-argv privileged strategy executor. No repository value becomes a command. */
|
|
50
52
|
export declare function executeSoftwareOperation(operation: SoftwareOperation): Promise<SoftwareCommandResult>;
|
|
51
53
|
export declare function observeSoftwareHost(osRelease?: string, architecture?: NodeJS.Architecture): SoftwareObservation;
|
package/dist/software.js
CHANGED
|
@@ -41,8 +41,17 @@ var UBUNTU_2604_X64 = [
|
|
|
41
41
|
{ requirement: { id: "openssh-client", version: "ubuntu-26.04" } }
|
|
42
42
|
];
|
|
43
43
|
var path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
44
|
-
var
|
|
45
|
-
|
|
44
|
+
var softwareSpawnFailure = (cause, argv) => cause.code === "ENOENT" ? { exitCode: 127, output: `executable is absent: ${argv[0]}` } : undefined;
|
|
45
|
+
var runSoftwareCommand = async (argv, env = {}) => {
|
|
46
|
+
let child;
|
|
47
|
+
try {
|
|
48
|
+
child = Bun.spawn([...argv], { stdout: "pipe", stderr: "pipe", env: { PATH: path, LANG: "C", LC_ALL: "C", ...env } });
|
|
49
|
+
} catch (cause) {
|
|
50
|
+
const failure = softwareSpawnFailure(cause, argv);
|
|
51
|
+
if (failure)
|
|
52
|
+
return failure;
|
|
53
|
+
throw cause;
|
|
54
|
+
}
|
|
46
55
|
const [stdout, stderr, exitCode] = await Promise.all([
|
|
47
56
|
new Response(child.stdout).text(),
|
|
48
57
|
new Response(child.stderr).text(),
|
|
@@ -50,6 +59,7 @@ var run = async (argv, env = {}) => {
|
|
|
50
59
|
]);
|
|
51
60
|
return { exitCode, output: `${stdout}${stderr}` };
|
|
52
61
|
};
|
|
62
|
+
var run = runSoftwareCommand;
|
|
53
63
|
var download = async (url, destination, sha256) => {
|
|
54
64
|
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(120000) });
|
|
55
65
|
if (!response.ok)
|
|
@@ -78,7 +88,7 @@ async function executeSoftwareOperation(operation) {
|
|
|
78
88
|
return binary.exitCode === 0 ? run(["/usr/bin/systemctl", "is-active", "--quiet", "nginx.service"]) : binary;
|
|
79
89
|
}
|
|
80
90
|
if (software === "arangodb") {
|
|
81
|
-
const binary = await run(["/usr/
|
|
91
|
+
const binary = await run(["/usr/sbin/arangod", "--version"]);
|
|
82
92
|
if (!successful(binary, /3\.11\.14/))
|
|
83
93
|
return { ...binary, exitCode: 1 };
|
|
84
94
|
const [active, enabled] = await Promise.all([
|
|
@@ -237,6 +247,8 @@ async function ensureSoftwareRequirements(requirementsInput, options) {
|
|
|
237
247
|
}
|
|
238
248
|
export {
|
|
239
249
|
validateSoftwareRequirements,
|
|
250
|
+
softwareSpawnFailure,
|
|
251
|
+
runSoftwareCommand,
|
|
240
252
|
observeSoftwareHost,
|
|
241
253
|
executeSoftwareOperation,
|
|
242
254
|
ensureSoftwareRequirements,
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** One package version shared by both public binaries. Pinned to package.json by tests. */
|
|
2
|
-
export declare const VERSION = "0.1.
|
|
2
|
+
export declare const VERSION = "0.1.53";
|