feat: 환경에서 비 Windows 플랫폼의 SPT 설치 경로 확인 및 Git/LFS 설치 시뮬레이션 기능 추가
This commit is contained in:
parent
c78159d442
commit
ce6d43f597
|
|
@ -670,7 +670,8 @@ const findSptInstallPath = async (
|
|||
};
|
||||
|
||||
const resolveSptInstall = async (): Promise<SptInstallInfo> => {
|
||||
if (process.platform !== "win32") {
|
||||
const isDevUi = process.env.VITE_DEV_UI === "1";
|
||||
if (process.platform !== "win32" && !isDevUi) {
|
||||
return {
|
||||
ok: false,
|
||||
checkedAt: Date.now(),
|
||||
|
|
@ -1007,7 +1008,10 @@ const runModSync = async (
|
|||
const installGitTools = async (
|
||||
onProgress?: (step: InstallStep) => void,
|
||||
): Promise<InstallGitToolsResult> => {
|
||||
const isDevUi = process.env.VITE_DEV_UI === "1";
|
||||
|
||||
if (process.platform !== "win32") {
|
||||
if (!isDevUi) {
|
||||
return {
|
||||
ok: false,
|
||||
error: "Windows에서만 자동 설치가 가능합니다.",
|
||||
|
|
@ -1015,6 +1019,71 @@ const installGitTools = async (
|
|||
};
|
||||
}
|
||||
|
||||
// Mac/Linux Dev UI Simulation
|
||||
const steps: InstallStep[] = [];
|
||||
const totalSteps = 3;
|
||||
const emitProgress = (
|
||||
name: string,
|
||||
current: number,
|
||||
status: InstallStep["status"],
|
||||
) => {
|
||||
const percent = Math.round((current / totalSteps) * 100);
|
||||
onProgress?.({
|
||||
name,
|
||||
ok: status !== "error",
|
||||
status,
|
||||
progress: { current, total: totalSteps, percent },
|
||||
result: { ok: true, command: "simulated", args: [] }
|
||||
});
|
||||
};
|
||||
|
||||
emitProgress("winget 확인", 1, "running");
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
const wingetStep: InstallStep = {
|
||||
name: "winget 확인",
|
||||
ok: true,
|
||||
status: "done",
|
||||
progress: { current: 1, total: totalSteps, percent: 33 },
|
||||
result: { ok: true, command: "simulated", args: [] }
|
||||
};
|
||||
steps.push(wingetStep);
|
||||
onProgress?.(wingetStep);
|
||||
|
||||
emitProgress("Git 설치", 2, "running");
|
||||
await new Promise(r => setTimeout(r, 800));
|
||||
const gitInstallStep: InstallStep = {
|
||||
name: "Git 설치",
|
||||
ok: true,
|
||||
status: "done",
|
||||
progress: { current: 2, total: totalSteps, percent: 67 },
|
||||
result: { ok: true, command: "simulated", args: [] }
|
||||
};
|
||||
steps.push(gitInstallStep);
|
||||
onProgress?.(gitInstallStep);
|
||||
|
||||
emitProgress("Git LFS 설치", 3, "running");
|
||||
await new Promise(r => setTimeout(r, 800));
|
||||
const lfsInstallStep: InstallStep = {
|
||||
name: "Git LFS 설치",
|
||||
ok: true,
|
||||
status: "done",
|
||||
progress: { current: 3, total: totalSteps, percent: 100 },
|
||||
result: { ok: true, command: "simulated", args: [] }
|
||||
};
|
||||
steps.push(lfsInstallStep);
|
||||
onProgress?.(lfsInstallStep);
|
||||
|
||||
return {
|
||||
ok: true,
|
||||
steps,
|
||||
check: {
|
||||
git: { ok: true, command: "git", version: "simulated" },
|
||||
lfs: { ok: true, command: "git", lfs: "simulated" } as any,
|
||||
checkedAt: Date.now()
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const steps: InstallStep[] = [];
|
||||
const totalSteps = 3;
|
||||
const emitProgress = (
|
||||
|
|
@ -1480,7 +1549,7 @@ app.whenReady().then(() => {
|
|||
// Wait for server health
|
||||
let attempts = 0;
|
||||
const maxAttempts = 30; // 30 seconds approx
|
||||
while(attempts < maxAttempts) {
|
||||
while (attempts < maxAttempts) {
|
||||
const health = await checkServerHealth();
|
||||
if (health.ok) {
|
||||
break;
|
||||
|
|
@ -1554,9 +1623,9 @@ app.whenReady().then(() => {
|
|||
}
|
||||
});
|
||||
|
||||
function stripExe(filename: string) {
|
||||
function stripExe(filename: string) {
|
||||
return filename.replace(/\.exe$/i, "");
|
||||
}
|
||||
}
|
||||
|
||||
ipcMain.handle("spt:checkGameRunning", async () => {
|
||||
return await checkGameRunning();
|
||||
|
|
|
|||
Loading…
Reference in New Issue