[bugfix] Ensure BSInstances exist before running depotdownloader

This commit is contained in:
MathieuG-P
2023-08-08 01:51:07 +02:00
parent 1305756cac
commit 6296a78cbc
2 changed files with 19 additions and 8 deletions
+15 -6
View File
@@ -8,9 +8,12 @@ export class DepotDownloader {
private processOut$: Observable<string>;
private subscriber: Subscriber<string>;
public constructor(options: {
command: string, args?: string[], options?: SpawnOptionsWithoutStdio, echoStartData?: unknown
}){
public constructor(
options: {
command: string, args?: string[], options?: SpawnOptionsWithoutStdio, echoStartData?: unknown
},
logger?: Logger
){
this.processOut$ = new Observable<string>(subscriber => {
@@ -25,11 +28,13 @@ export class DepotDownloader {
lines.forEach(line => subscriber.next(line));
});
this.process.on("error", error => subscriber.error(error));
this.process.stderr.on("error", error => subscriber.error(error));
this.process.on("exit", code => subscriber.complete());
this.process.on("exit", () => subscriber.complete());
return () => {
this.process.kill();
logger?.info("DepotDownloader process end with code", this.process.exitCode);
this.process = null;
}
@@ -48,8 +53,6 @@ export class DepotDownloader {
return this.processOut$.pipe(map(line => {
console.log(line);
const matched = (line.toString() as string).match(/(?:\[(.*?)\])\|(?:\[(.*?)\]\|)?(.*?)(?=$|\[)/gm)?.[0] ?? null;
if(!matched){ return null; }
@@ -98,4 +101,10 @@ export class DepotDownloader {
return args;
}
}
interface Logger {
info: (...args: unknown[]) => void,
warn: (...args: unknown[]) => void,
error: (...args: unknown[]) => void,
}
+4 -2
View File
@@ -7,7 +7,7 @@ import log from "electron-log";
import { InstallationLocationService } from "./installation-location.service";
import { BSLocalVersionService } from "./bs-local-version.service";
import { WindowManagerService } from "./window-manager.service";
import { copy } from "fs-extra";
import { copy, ensureDir } from "fs-extra";
import { pathExist } from "../helpers/fs.helpers";
import { Observable, map } from "rxjs";
import { DepotDownloaderArgsOptions, DepotDownloaderErrorEvent, DepotDownloaderEvent, DepotDownloaderEventType, DepotDownloaderInfoEvent } from "../../shared/models/depot-downloader.model";
@@ -77,12 +77,14 @@ export class BSInstallerService {
qr
}
await ensureDir(this.installLocationService.versionsDirectory);
return new DepotDownloader({
command: this.getDepotDownloaderExePath(),
args: DepotDownloader.buildArgs(depotDownloaderOptions),
options: { cwd: this.installLocationService.versionsDirectory },
echoStartData: downloadVersion
});
}, log);
}
private buildDepotDownloaderObservable(downloadInfos: DownloadInfo, qr?: boolean): Observable<DepotDownloaderEvent> {