@vxrn/takeout-cli
Version:
CLI tools for Takeout starter kit - interactive onboarding and project setup
113 lines (112 loc) • 3.96 kB
JavaScript
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);
}
//# sourceMappingURL=prerequisites.js.map