first version of vscode.workspace.fs

This commit is contained in:
Johannes Rieken
2019-06-21 10:56:36 +02:00
parent e4ca6137b4
commit 44596ac959
6 changed files with 239 additions and 2 deletions

View File

@@ -104,6 +104,36 @@ class FsLinkProvider {
}
}
class ConsumerFileSystem implements vscode.FileSystem {
constructor(private _proxy: MainThreadFileSystemShape) { }
stat(uri: vscode.Uri): Promise<vscode.FileStat> {
return this._proxy.$stat(uri);
}
readDirectory(uri: vscode.Uri): Promise<[string, vscode.FileType][]> {
return this._proxy.$readdir(uri);
}
createDirectory(uri: vscode.Uri): Promise<void> {
return this._proxy.$mkdir(uri);
}
async readFile(uri: vscode.Uri): Promise<Uint8Array> {
return (await this._proxy.$readFile(uri)).buffer;
}
writeFile(uri: vscode.Uri, content: Uint8Array, options: { create: boolean; overwrite: boolean; } = { create: true, overwrite: true }): Promise<void> {
return this._proxy.$writeFile(uri, VSBuffer.wrap(content), options);
}
delete(uri: vscode.Uri, options: { recursive: boolean; } = { recursive: false }): Promise<void> {
return this._proxy.$delete(uri, { ...options, useTrash: true }); //todo@joh useTrash
}
rename(oldUri: vscode.Uri, newUri: vscode.Uri, options: { overwrite: boolean; } = { overwrite: false }): Promise<void> {
return this._proxy.$rename(oldUri, newUri, options);
}
copy(source: vscode.Uri, destination: vscode.Uri, options: { overwrite: boolean } = { overwrite: false }): Promise<void> {
return this._proxy.$copy(source, destination, options);
}
}
export class ExtHostFileSystem implements ExtHostFileSystemShape {
private readonly _proxy: MainThreadFileSystemShape;
@@ -115,6 +145,8 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
private _linkProviderRegistration: IDisposable;
private _handlePool: number = 0;
readonly fileSystem: vscode.FileSystem;
constructor(mainContext: IMainContext, private _extHostLanguageFeatures: ExtHostLanguageFeatures) {
this._proxy = mainContext.getProxy(MainContext.MainThreadFileSystem);
this._usedSchemes.add(Schemas.file);
@@ -127,6 +159,8 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
this._usedSchemes.add(Schemas.mailto);
this._usedSchemes.add(Schemas.data);
this._usedSchemes.add(Schemas.command);
this.fileSystem = new ConsumerFileSystem(this._proxy);
}
dispose(): void {