diff --git a/src/app/services/python-uploader/filesystem/FileSystem.ts b/src/app/services/python-uploader/filesystem/FileSystem.ts index b80bcbad..a7e96186 100644 --- a/src/app/services/python-uploader/filesystem/FileSystem.ts +++ b/src/app/services/python-uploader/filesystem/FileSystem.ts @@ -82,6 +82,7 @@ async function mkdir(writer: WritableStreamDefaultWriter, reader: ReadableStream if (failed) { throw new Error(stdErr); } + return stdOut; } async function ls(writer: WritableStreamDefaultWriter, reader: ReadableStreamDefaultReader, path: string): Promise<{name: string, isDir: boolean}[]> { diff --git a/src/app/services/python-uploader/mip/PackageManager.ts b/src/app/services/python-uploader/mip/PackageManager.ts index f997d891..7294b9b7 100644 --- a/src/app/services/python-uploader/mip/PackageManager.ts +++ b/src/app/services/python-uploader/mip/PackageManager.ts @@ -1,4 +1,4 @@ -import {get, ls, put, rm, rmdir} from "../filesystem/FileSystem"; +import {get, ls, mkdir, put, rm, rmdir} from "../filesystem/FileSystem"; export class PackageManager { @@ -51,6 +51,13 @@ export class PackageManager { if (!url) { throw new Error('No url provided'); } else if (url.startsWith('github:')) { + let writer = this.serialPort.writable.getWriter(); + let reader = this.serialPort.readable.getReader(); + try { + await mkdir(writer, reader, '/lib'); + } catch (error) {} + writer.releaseLock(); + reader.releaseLock(); let json = JSON.parse(await PackageManager.fetchMipUrl(url)); const version = json['version']; if (await this.checkLibraryVersion(version, PackageManager.getLibraryName(url))) { @@ -64,8 +71,8 @@ export class PackageManager { content.push({name: '/lib/' + file[0], content: response}); } - const writer = this.serialPort.writable.getWriter(); - const reader = this.serialPort.readable.getReader(); + writer = this.serialPort.writable.getWriter(); + reader = this.serialPort.readable.getReader(); // get a list of .dist-info files in the lib folder and delete them const response = await ls(writer, reader, '/lib'); // get a list of all the .dist-info folders