@vxrn/takeout-cli
Version:
CLI tools for Takeout starter kit - interactive onboarding and project setup
135 lines (134 loc) • 4.25 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) {
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;
});
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
checkAllPrerequisites,
checkBun,
checkDocker,
checkGit,
checkNode,
hasRequiredPrerequisites
});
//# sourceMappingURL=prerequisites.js.map