UNPKG

@vxrn/takeout-cli

Version:

CLI tools for Takeout starter kit - interactive onboarding and project setup

92 lines (91 loc) 2.93 kB
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