memfs - adopt latest, proposed, api

This commit is contained in:
Johannes Rieken
2018-04-17 11:10:44 +02:00
parent 14378a8145
commit 97db8e5a24
3 changed files with 21 additions and 20 deletions

View File

@ -13,17 +13,17 @@ export function activate(context: vscode.ExtensionContext) {
if (!initialzied) {
initialzied = true;
memFs.create(vscode.Uri.parse(`memfs:/empty.txt`), { type: vscode.FileType2.File });
memFs.create(vscode.Uri.parse(`memfs:/folder/`), { type: vscode.FileType2.Directory });
memFs.create(vscode.Uri.parse(`memfs:/xyz/`), { type: vscode.FileType2.Directory });
memFs.create(vscode.Uri.parse(`memfs:/xyz/abc`), { type: vscode.FileType2.Directory });
memFs.create(vscode.Uri.parse(`memfs:/xyz/def`), { type: vscode.FileType2.Directory });
memFs.create(vscode.Uri.parse(`memfs:/folder/empty.foo`), { type: vscode.FileType2.File });
memFs.createDirectory(vscode.Uri.parse(`memfs:/folder/`));
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/`));
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/abc`));
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/def`));
memFs.writeFile(vscode.Uri.parse(`memfs:/empty.txt`), new Uint8Array(0));
memFs.writeFile(vscode.Uri.parse(`memfs:/file.txt`), Buffer.from('foo'));
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'));
memFs.writeFile(vscode.Uri.parse(`memfs:/file.css`), Buffer.from('* { color: green; }'));
memFs.writeFile(vscode.Uri.parse(`memfs:/large-rnd.foo`), randomData(10000));
memFs.writeFile(vscode.Uri.parse(`memfs:/large-rnd.foo`), randomData(50000));
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/empty.foo`), new Uint8Array(0));
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'));
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.md`), Buffer.from('*MemFS*'));
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.bin`), Buffer.from([0, 0, 0, 1, 7, 0, 0, 1, 1]));
}

View File

@ -46,7 +46,7 @@ type Entry = File | Directory;
export class MemFS implements vscode.FileSystemProvider2 {
_version: 5 = 5;
_version: 6 = 6;
private _root = new Directory('');
private _data = new WeakMap<Entry, Uint8Array>();
@ -118,16 +118,12 @@ export class MemFS implements vscode.FileSystemProvider2 {
this._fireSoon({ type: vscode.FileChangeType2.Changed, uri: dirname }, { uri, type: vscode.FileChangeType2.Deleted });
}
create(uri: vscode.Uri, options: { type: vscode.FileType2; }): vscode.FileStat2 {
let dirname = uri.with({ path: path.posix.dirname(uri.path) });
createDirectory(uri: vscode.Uri): vscode.FileStat2 {
let basename = path.posix.basename(uri.path);
let dirname = uri.with({ path: path.posix.dirname(uri.path) });
let parent = this._lookupDir(dirname);
let entry: Entry;
if (options.type === vscode.FileType2.Directory) {
entry = new Directory(basename);
} else {
entry = new File(basename);
}
let entry = new Directory(basename);
parent.entries.set(entry.name, entry);
parent.mtime = Date.now();
parent.size += 1;

View File

@ -232,7 +232,7 @@ declare module 'vscode' {
// todo@joh add open/close calls?
export interface FileSystemProvider2 {
_version: 5;
_version: 6;
/**
* An event to signal that a resource has been created, changed, or deleted.
@ -293,8 +293,13 @@ declare module 'vscode' {
// ? useTrash, expose trash
delete(uri: Uri, token: CancellationToken): void | Thenable<void>;
// todo@remote
create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): FileStat2 | Thenable<FileStat2>;
/**
* Create a new directory. *Note* that new files are created via `write`-calls.
*
* @param uri
* @param token
*/
createDirectory(uri: Uri, token: CancellationToken): FileStat2 | Thenable<FileStat2>;
}
export namespace workspace {