From bc6333bd209ffdd63226f016d3b78fd68cccea97 Mon Sep 17 00:00:00 2001 From: Michael Borisov Date: Mon, 10 Apr 2023 21:43:43 +0200 Subject: [PATCH] fix root dir resolution for WSL2 --- CHANGELOG.md | 8 +++ .../makeMicromambaCreateEnvironmentTask.ts | 60 ++++++++++--------- 2 files changed, 41 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02f8b8e..0ad03b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ Bug-fixes within the same version aren't needed ## Master --> +### 0.1.15 + +* Fix root dir resolution for WSL2 + +### 0.1.14 + +* Fix installing extension on remote server via SSH + ### 0.1.12 * Fix create environment double run in terminal diff --git a/src/micromamba/makeMicromambaCreateEnvironmentTask.ts b/src/micromamba/makeMicromambaCreateEnvironmentTask.ts index 6f22bcf..da922d2 100644 --- a/src/micromamba/makeMicromambaCreateEnvironmentTask.ts +++ b/src/micromamba/makeMicromambaCreateEnvironmentTask.ts @@ -11,6 +11,38 @@ export const getMicromambaCreateEnvironmentArgs = (environmentFileName: string): '--yes', ] +export function makeProcess$(extContext: ExtensionContext, environmentFileName: string) { + return new Observable((o) => { + const child = spawn(extContext.micromambaPath, [ + 'create', + '--file', + environmentFileName, + '--yes', + ], { + cwd: extContext.rootDir, + env: process.env, + }) + child.stderr.setEncoding('utf8') + child.stderr.on('data', (chunk) => { + const data = isWindows ? chunk.toString() : chunk.toString().replaceAll('\n', '\r\n') + o.next(data) + }) + child.stdout.setEncoding('utf8') + child.stdout.on('data', (chunk) => { + const data = isWindows ? chunk.toString() : chunk.toString().replaceAll('\n', '\r\n') + o.next(data) + }) + child.on('error', (err) => o.next(`${err.name}: ${err.message}`)) + child.on('close', (code) => { + if (code === 0) + o.complete() + else + o.error(code) + }) + return () => child.kill() + }) +} + export const makeMicromambaCreateEnvironmentTask = ( extContext: ExtensionContext, environmentFileName: string, @@ -19,33 +51,7 @@ export const makeMicromambaCreateEnvironmentTask = ( const newLocal = new vscode.CustomExecution(async () => { const writeEmitter = new vscode.EventEmitter(); const closeEmitter = new vscode.EventEmitter(); - const process$ = new Observable((o) => { - const child = spawn(extContext.micromambaPath, [ - 'create', - '--file', - environmentFileName, - '--yes', - ], { - cwd: workspaceFolder.uri.path, - env: process.env, - }) - child.stderr.setEncoding('utf8') - child.stderr.on('data', (chunk) => { - const data = isWindows ? chunk.toString() : chunk.toString().replaceAll('\n', '\r\n') - o.next(data) - }) - child.stdout.setEncoding('utf8') - child.stdout.on('data', (chunk) => { - const data = isWindows ? chunk.toString() : chunk.toString().replaceAll('\n', '\r\n') - o.next(data) - }) - child.on('error', (err) => writeEmitter.fire(`${err.name}: ${err.message}`)) - child.on('close', (code) => { - if (code === 0) o.complete() - else o.error(code) - }) - return () => child.kill() - }) + const process$ = makeProcess$(extContext, environmentFileName) let sub: Subscription const pty: vscode.Pseudoterminal = { onDidWrite: writeEmitter.event,