Updating make install script

This commit is contained in:
Ryan Ward
2026-09-30 09:18:20 -05:00
parent 669a7fc748
commit 4a75395c40
@@ -195,11 +195,14 @@ function App() {
// ─── Step 0: Check working directory ───────────────────────────
updateStep(0, { status: "running" });
await runCommandStreaming(
`if [ -n "$(git status --porcelain)" ]; then git status --short; exit 1; fi`,
WORKSPACE_ROOT,
(line) => appendLog(0, line)
);
const changes = execFileSync("git", ["status", "--short"], {
cwd: WORKSPACE_ROOT,
encoding: "utf8",
}).trimEnd();
if (changes) {
for (const line of changes.split("\n")) appendLog(0, line);
throw new Error("Working directory has uncommitted changes. Commit or stash them before installing.");
}
updateStep(0, { status: "done" });
// ─── Step 1: Pull current branch ────────────────────────────────
@@ -234,36 +237,28 @@ function App() {
await stopApp("Galaxy", (line) => appendLog(3, line));
const isWritable = (target: string) => {
try {
fs.accessSync(target, fs.constants.W_OK);
return true;
} catch {
return false;
}
};
const useSudo =
!isWritable("/Applications") ||
(fs.existsSync(destPath) &&
(!isWritable(destPath) || fs.statSync(destPath).uid !== process.getuid?.()));
const privilege = useSudo ? "sudo " : "";
appendLog(3, "Administrator password required to install in /Applications");
await runCommandStreaming(
"sudo -k && sudo -v",
WORKSPACE_ROOT,
(line) => appendLog(3, line),
true
);
if (fs.existsSync(destPath)) {
appendLog(3, `Removing existing ${destPath}`);
await runCommandStreaming(
`${privilege}rm -rf "${destPath}"`,
`sudo -n rm -rf "${destPath}"`,
WORKSPACE_ROOT,
(line) => appendLog(3, line),
useSudo
(line) => appendLog(3, line)
);
}
appendLog(3, `Copying ${appPath} → ${destPath}`);
await runCommandStreaming(
`${privilege}ditto "${appPath}" "${destPath}"`,
`sudo -n ditto "${appPath}" "${destPath}"`,
WORKSPACE_ROOT,
(line) => appendLog(3, line),
useSudo
(line) => appendLog(3, line)
);
updateStep(3, { status: "done", detail: destPath });
@@ -273,6 +268,7 @@ function App() {
execSync(`open "${destPath}"`, { stdio: "ignore" });
updateStep(4, { status: "done" });
} catch (err: any) {
process.exitCode = 1;
setSteps((prev) =>
prev.map((s) =>
s.status === "running"
@@ -284,8 +280,8 @@ function App() {
})();
}, []);
const allDone = steps.every((s) => s.status === "done" || s.status === "error");
const hasError = steps.some((s) => s.status === "error");
const allDone = hasError || steps.every((s) => s.status === "done");
return (
<Box flexDirection="column" padding={1}>