Merge branch 'v1.5.0' into feature/playlists/107

This commit is contained in:
MathieuG-P
2024-05-21 20:38:38 +02:00
8 changed files with 72 additions and 16 deletions
@@ -3,6 +3,7 @@ import { BSLocalVersionService } from "../bs-local-version.service";
import { ChildProcessWithoutNullStreams, SpawnOptionsWithoutStdio, spawn } from "child_process";
import path from "path";
import log from "electron-log";
import { sToMs } from "shared/helpers/time.helpers";
export abstract class AbstractLauncherService {
@@ -46,20 +47,40 @@ export abstract class AbstractLauncherService {
}
protected launchBs(bsExePath: string, args: string[], options?: SpawnOptionsWithoutStdio): {process: ChildProcessWithoutNullStreams, exit: Promise<number>} {
protected launchBs(bsExePath: string, args: string[], options?: SpawnBsProcessOptions): {process: ChildProcessWithoutNullStreams, exit: Promise<number>} {
const process = this.launchBSProcess(bsExePath, args, options);
let timoutId: NodeJS.Timeout;
const exit = new Promise<number>((resolve, reject) => {
process.on("error", (err) => {
log.error(`Error while launching BS`, err);
reject(err);
});
process.on("exit", (code) => {
log.info(`BS process exit with code ${code}`);
resolve(code);
});
const unrefAfter = options?.unrefAfter ?? sToMs(10);
timoutId = setTimeout(() => {
log.error("BS process unref after timeout", unrefAfter);
process.unref();
process.removeAllListeners();
resolve(-1);
}, unrefAfter);
}).finally(() => {
clearTimeout(timoutId);
});
return { process, exit };
}
}
export type SpawnBsProcessOptions = {
unrefAfter?: number;
} & SpawnOptionsWithoutStdio;
@@ -112,7 +112,7 @@ export class BsModsManagerService {
private async getBsipaInstalled(version: BSVersion): Promise<Mod> {
const bsPath = await this.bsLocalService.getVersionPath(version);
const injectorPath = path.join(bsPath, "IPA", "winhttp.dll");
const injectorPath = path.join(bsPath, "Beat Saber_Data", "Managed", "IPA.Injector.dll");
if (!(await pathExist(injectorPath))) {
return undefined;
}