@vxrn/takeout-cli
Version:
CLI tools for Takeout starter kit - interactive onboarding and project setup
92 lines (91 loc) • 2.93 kB
JavaScript
import { execSync } from "node:child_process";
function execCommand(command) {
try {
return execSync(command, {
encoding: "utf-8",
stdio: ["pipe", "pipe", "ignore"]
}).trim();
} catch {
return null;
}
}
function getVersion(command) {
var output = execCommand(command);
if (!output) return null;
var match = output.match(/\d+\.\d+\.\d+/);
return match ? match[0] : output;
}
function compareVersions(current, required) {
for (var parseCurrent = current.replace(/^v/, "").split(".").map(Number), parseRequired = required.replace(/^v/, "").split(".").map(Number), i = 0; i < 3; i++) {
var curr = parseCurrent[i] || 0,
req = parseRequired[i] || 0;
if (curr > req) return !0;
if (curr < req) return !1;
}
return !0;
}
function checkBun() {
var version = getVersion("bun --version");
if (!version) throw new Error("No bun version?");
var requiredVersion = "1.0.0";
return {
name: "Bun",
required: !0,
installed: !!version,
version,
requiredVersion,
message: version ? compareVersions(version, requiredVersion) ? `Bun ${version} installed` : `Bun ${version} installed (${requiredVersion}+ recommended)` : "Bun not found",
installUrl: "https://bun.sh"
};
}
function checkNode() {
var version = getVersion("node --version"),
requiredVersion = "20.0.0";
if (!version) throw new Error("No node version?");
return {
name: "Node.js",
required: !1,
installed: !!version,
version,
requiredVersion,
message: version ? compareVersions(version, requiredVersion) ? `Node.js ${version} installed` : `Node.js ${version} installed (${requiredVersion}+ recommended)` : "Node.js not found (optional)",
installUrl: "https://nodejs.org"
};
}
function checkDocker() {
var version = getVersion("docker --version"),
isRunning = !!execCommand("docker ps");
if (!version) throw new Error("No docker version?");
return {
name: "Docker",
required: !0,
installed: !!version,
version,
message: version ? isRunning ? `Docker ${version} running` : "Docker installed but not running" : "Docker not found",
installUrl: "https://docs.docker.com/get-docker/"
};
}
function checkGit() {
var version = getVersion("git --version");
if (!version) throw new Error("No git version?");
return {
name: "Git",
required: !0,
installed: !!version,
version,
message: version ? `Git ${version} installed` : "Git not found",
installUrl: "https://git-scm.com"
};
}
function checkAllPrerequisites() {
return [checkBun(), checkNode(), checkDocker(), checkGit()];
}
function hasRequiredPrerequisites(checks) {
return checks.filter(function (c) {
return c.required;
}).every(function (c) {
return c.installed;
});
}
export { checkAllPrerequisites, checkBun, checkDocker, checkGit, checkNode, hasRequiredPrerequisites };
//# sourceMappingURL=prerequisites.native.js.map