UNPKG

@vxrn/takeout-cli

Version:

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

117 lines 3.95 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: !0 }); }, __copyProps = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); return to; }; var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); var prerequisites_exports = {}; __export(prerequisites_exports, { checkAllPrerequisites: () => checkAllPrerequisites, checkBun: () => checkBun, checkDocker: () => checkDocker, checkGit: () => checkGit, checkNode: () => checkNode, hasRequiredPrerequisites: () => hasRequiredPrerequisites }); module.exports = __toCommonJS(prerequisites_exports); var import_node_child_process = require("node:child_process"); function execCommand(command) { try { return (0, import_node_child_process.execSync)(command, { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] }).trim(); } catch { return null; } } function getVersion(command) { const output = execCommand(command); if (!output) return null; const match = output.match(/\d+\.\d+\.\d+/); return match ? match[0] : output; } function compareVersions(current, required) { const parseCurrent = current.replace(/^v/, "").split(".").map(Number), parseRequired = required.replace(/^v/, "").split(".").map(Number); for (let i = 0; i < 3; i++) { const curr = parseCurrent[i] || 0, req = parseRequired[i] || 0; if (curr > req) return !0; if (curr < req) return !1; } return !0; } function checkBun() { const version = getVersion("bun --version"); if (!version) throw new Error("No bun version?"); const 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() { const 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() { const 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() { const 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(c => c.required).every(c => c.installed); }