Commit 32ece509 authored by nanahira's avatar nanahira

tar path

parent c4768d23
...@@ -58,9 +58,20 @@ export class AppsService { ...@@ -58,9 +58,20 @@ export class AppsService {
map: Map<string, string> = new Map(); map: Map<string, string> = new Map();
connections = new Map<App, Connection>(); connections = new Map<App, Connection>();
maotama: Promise<ChildProcess>; maotama: Promise<ChildProcess>;
readonly tarPath = process.platform === 'win32' ? private systemBinPath(executableName: string) {
path.join(process.env['NODE_ENV'] === 'production' ? process.resourcesPath! : '', 'bin', 'bsdtar.exe') return path.join(process.env['NODE_ENV'] === 'production' ? process.resourcesPath! : '', 'bin', executableName);
: 'bsdtar'; }
private get tarPath() {
if (process.platform === 'linux') {
return 'tar';
} else if (process.platform === 'win32') {
return this.systemBinPath('bsdtar.exe');
} else {
return this.systemBinPath('gtar');
}
}
private apps: Map<string, App>; private apps: Map<string, App>;
constructor(private http: Http, private settingsService: SettingsService, private ref: ApplicationRef, constructor(private http: Http, private settingsService: SettingsService, private ref: ApplicationRef,
...@@ -991,8 +1002,12 @@ export class AppsService { ...@@ -991,8 +1002,12 @@ export class AppsService {
extract(file: string, dir: string): Observable<string> { extract(file: string, dir: string): Observable<string> {
return Observable.create((observer: Observer<string>) => { return Observable.create((observer: Observer<string>) => {
Logger.info('Start to extract... Command Line: ' + this.tarPath, file, dir); const tarArgs = ['-xvf', file, '-C', dir];
let tarProcess = child_process.spawn(this.tarPath, ['xvf', file, '-C', dir]); if(process.platform === 'darwin') {
tarArgs.unshift(`--use-compress-program=${this.systemBinPath('zstd')}`)
}
Logger.info('Start to extract... Command Line: ' + this.tarPath, tarArgs.join(' '));
let tarProcess = child_process.spawn(this.tarPath, tarArgs);
let rl = readline.createInterface({ let rl = readline.createInterface({
input: <ReadableStream>tarProcess.stderr, input: <ReadableStream>tarProcess.stderr,
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment