everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
77 lines (75 loc) • 2.41 kB
JavaScript
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
const require_dev_log_pipeline = require('../dev-log-pipeline.cjs');
let node_fs = require("node:fs");
let node_path = require("node:path");
let execa = require("execa");
let node_process = require("node:process");
node_process = require_runtime.__toESM(node_process, 1);
//#region src/infra/docker.ts
const TAIL_LINES = 15;
function takeTail(lines, count = TAIL_LINES) {
return lines.slice(-count).join("\n").trim();
}
function composeFilePath(configDir) {
return (0, node_path.join)(configDir, "docker-compose.yml");
}
function isDockerTestMode(env) {
return env.BOS_TEST === "1" || env.NODE_ENV === "test" || env.BOS_NO_PERSIST_PORTS === "1";
}
function shouldAutoStartDocker(failures, guards) {
if (failures.length === 0) return false;
if (guards.testMode || !guards.dockerAvailable || !guards.composeFileExists) return false;
return failures.every((failure) => failure.tcpReachable === false);
}
async function isDockerAvailable() {
try {
return ((await (0, execa.execa)("docker", ["info"], {
stdio: "pipe",
reject: false,
timeout: 5e3
})).exitCode ?? 1) === 0;
} catch {
return false;
}
}
async function runDockerComposeUp(configDir) {
try {
const result = await (0, execa.execa)("docker", [
"compose",
"up",
"-d",
"--wait"
], {
cwd: configDir,
stdio: "pipe",
reject: false,
timeout: 3e5
});
const lines = [result.stdout ?? "", result.stderr ?? ""].flatMap((output) => output.split("\n")).map((line) => require_dev_log_pipeline.stripAnsi(line).trim()).filter((line) => line.length > 0);
return {
ok: (result.exitCode ?? 1) === 0,
tail: takeTail(lines)
};
} catch (error) {
return {
ok: false,
tail: error instanceof Error ? error.message : String(error)
};
}
}
function detectAutoStartContext(configDir) {
return {
composeFileExists: (0, node_fs.existsSync)(composeFilePath(configDir)),
dockerAvailable: false,
testMode: isDockerTestMode(node_process.default.env)
};
}
//#endregion
exports.composeFilePath = composeFilePath;
exports.detectAutoStartContext = detectAutoStartContext;
exports.isDockerAvailable = isDockerAvailable;
exports.isDockerTestMode = isDockerTestMode;
exports.runDockerComposeUp = runDockerComposeUp;
exports.shouldAutoStartDocker = shouldAutoStartDocker;
exports.takeTail = takeTail;
//# sourceMappingURL=docker.cjs.map