Updating make install script
This commit is contained in:
@@ -195,11 +195,14 @@ function App() {
|
|||||||
|
|
||||||
// ─── Step 0: Check working directory ───────────────────────────
|
// ─── Step 0: Check working directory ───────────────────────────
|
||||||
updateStep(0, { status: "running" });
|
updateStep(0, { status: "running" });
|
||||||
await runCommandStreaming(
|
const changes = execFileSync("git", ["status", "--short"], {
|
||||||
`if [ -n "$(git status --porcelain)" ]; then git status --short; exit 1; fi`,
|
cwd: WORKSPACE_ROOT,
|
||||||
WORKSPACE_ROOT,
|
encoding: "utf8",
|
||||||
(line) => appendLog(0, line)
|
}).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" });
|
updateStep(0, { status: "done" });
|
||||||
|
|
||||||
// ─── Step 1: Pull current branch ────────────────────────────────
|
// ─── Step 1: Pull current branch ────────────────────────────────
|
||||||
@@ -234,36 +237,28 @@ function App() {
|
|||||||
|
|
||||||
await stopApp("Galaxy", (line) => appendLog(3, line));
|
await stopApp("Galaxy", (line) => appendLog(3, line));
|
||||||
|
|
||||||
const isWritable = (target: string) => {
|
appendLog(3, "Administrator password required to install in /Applications");
|
||||||
try {
|
await runCommandStreaming(
|
||||||
fs.accessSync(target, fs.constants.W_OK);
|
"sudo -k && sudo -v",
|
||||||
return true;
|
WORKSPACE_ROOT,
|
||||||
} catch {
|
(line) => appendLog(3, line),
|
||||||
return false;
|
true
|
||||||
}
|
);
|
||||||
};
|
|
||||||
const useSudo =
|
|
||||||
!isWritable("/Applications") ||
|
|
||||||
(fs.existsSync(destPath) &&
|
|
||||||
(!isWritable(destPath) || fs.statSync(destPath).uid !== process.getuid?.()));
|
|
||||||
const privilege = useSudo ? "sudo " : "";
|
|
||||||
|
|
||||||
if (fs.existsSync(destPath)) {
|
if (fs.existsSync(destPath)) {
|
||||||
appendLog(3, `Removing existing ${destPath}`);
|
appendLog(3, `Removing existing ${destPath}`);
|
||||||
await runCommandStreaming(
|
await runCommandStreaming(
|
||||||
`${privilege}rm -rf "${destPath}"`,
|
`sudo -n rm -rf "${destPath}"`,
|
||||||
WORKSPACE_ROOT,
|
WORKSPACE_ROOT,
|
||||||
(line) => appendLog(3, line),
|
(line) => appendLog(3, line)
|
||||||
useSudo
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
appendLog(3, `Copying ${appPath} → ${destPath}`);
|
appendLog(3, `Copying ${appPath} → ${destPath}`);
|
||||||
await runCommandStreaming(
|
await runCommandStreaming(
|
||||||
`${privilege}ditto "${appPath}" "${destPath}"`,
|
`sudo -n ditto "${appPath}" "${destPath}"`,
|
||||||
WORKSPACE_ROOT,
|
WORKSPACE_ROOT,
|
||||||
(line) => appendLog(3, line),
|
(line) => appendLog(3, line)
|
||||||
useSudo
|
|
||||||
);
|
);
|
||||||
|
|
||||||
updateStep(3, { status: "done", detail: destPath });
|
updateStep(3, { status: "done", detail: destPath });
|
||||||
@@ -273,6 +268,7 @@ function App() {
|
|||||||
execSync(`open "${destPath}"`, { stdio: "ignore" });
|
execSync(`open "${destPath}"`, { stdio: "ignore" });
|
||||||
updateStep(4, { status: "done" });
|
updateStep(4, { status: "done" });
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
|
process.exitCode = 1;
|
||||||
setSteps((prev) =>
|
setSteps((prev) =>
|
||||||
prev.map((s) =>
|
prev.map((s) =>
|
||||||
s.status === "running"
|
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 hasError = steps.some((s) => s.status === "error");
|
||||||
|
const allDone = hasError || steps.every((s) => s.status === "done");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box flexDirection="column" padding={1}>
|
<Box flexDirection="column" padding={1}>
|
||||||
|
|||||||
Reference in New Issue
Block a user