feat: componentize GStack 2 runtime and release integrity

This commit is contained in:
Sinabina
2026-07-20 14:16:23 -07:00
parent b0ea2296d1
commit f14445bb00
270 changed files with 9681 additions and 51572 deletions
+30
View File
@@ -0,0 +1,30 @@
import fs from "node:fs/promises";
import path from "node:path";
export function bashCandidates(env = process.env, platform = process.platform) {
const values = [env.GSTACK_BASH];
if (platform === "win32") {
for (const root of [
env.ProgramFiles,
env["ProgramFiles(x86)"],
env.LOCALAPPDATA && path.join(env.LOCALAPPDATA, "Programs"),
]) {
if (!root) continue;
values.push(
path.join(root, "Git", "bin", "bash.exe"),
path.join(root, "Git", "usr", "bin", "bash.exe"),
);
}
}
values.push("bash");
return values.filter((entry, index, list) => entry && list.indexOf(entry) === index);
}
export async function resolveBashCommand(env = process.env, platform = process.platform) {
for (const candidate of bashCandidates(env, platform)) {
if (!path.isAbsolute(candidate)) return candidate;
const stat = await fs.lstat(candidate).catch(() => null);
if (stat?.isFile() && !stat.isSymbolicLink()) return candidate;
}
return "bash";
}