catch up with latest changes

This commit is contained in:
Johannes Rieken
2018-04-26 12:11:17 +02:00
parent 50e23a2acd
commit e455ed51f7
2 changed files with 20 additions and 23 deletions

View File

@ -29,17 +29,17 @@ export function activate(context: vscode.ExtensionContext) {
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), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/file.txt`), Buffer.from('foo'), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/file.css`), Buffer.from('* { color: green; }'), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/large_rnd.foo`), randomData(50000), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/empty.foo`), new Uint8Array(0), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.md`), Buffer.from('*MemFS*'), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.bin`), Buffer.from([0, 0, 0, 1, 7, 0, 0, 1, 1]), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/empty.txt`), new Uint8Array(0), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/file.txt`), Buffer.from('foo'), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/file.css`), Buffer.from('* { color: green; }'), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/large_rnd.foo`), randomData(50000), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/empty.foo`), new Uint8Array(0), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.md`), Buffer.from('*MemFS*'), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.bin`), Buffer.from([0, 0, 0, 1, 7, 0, 0, 1, 1]), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/UPPER.txt`), Buffer.from('UPPER'), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/upper.txt`), Buffer.from('upper'), { create: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/UPPER.txt`), Buffer.from('UPPER'), { create: true, overwrite: true });
memFs.writeFile(vscode.Uri.parse(`memfs:/upper.txt`), Buffer.from('upper'), { create: true, overwrite: true });
}));
}

View File

@ -72,19 +72,11 @@ export class MemFS implements vscode.FileSystemProvider {
// --- manage file contents
readFile(uri: vscode.Uri, options: vscode.FileOptions): Uint8Array {
const entry = this._lookupAsFile(uri, true);
if (!entry && options.create) {
this.writeFile(uri, new Uint8Array(0), options);
return this.readFile(uri, { ...options, create: false });
} else if (!entry) {
throw vscode.FileSystemError.FileNotFound(uri);
} else {
return entry.data;
}
readFile(uri: vscode.Uri): Uint8Array {
return this._lookupAsFile(uri, false).data;
}
writeFile(uri: vscode.Uri, content: Uint8Array, options: vscode.FileOptions): void {
writeFile(uri: vscode.Uri, content: Uint8Array, options: { create: boolean, overwrite: boolean }): void {
let basename = path.posix.basename(uri.path);
let parent = this._lookupParentDirectory(uri);
let entry = parent.entries.get(basename);
@ -94,7 +86,7 @@ export class MemFS implements vscode.FileSystemProvider {
if (!entry && !options.create) {
throw vscode.FileSystemError.FileNotFound(uri);
}
if (entry && options.create && options.exclusive) {
if (entry && options.create && !options.overwrite) {
throw vscode.FileSystemError.FileExists(uri);
}
if (!entry) {
@ -111,7 +103,12 @@ export class MemFS implements vscode.FileSystemProvider {
// --- manage files/folders
rename(oldUri: vscode.Uri, newUri: vscode.Uri): vscode.FileStat {
rename(oldUri: vscode.Uri, newUri: vscode.Uri, options: { overwrite: boolean }): vscode.FileStat {
if (!options.overwrite && this._lookup(newUri, true)) {
throw vscode.FileSystemError.FileExists(newUri);
}
let entry = this._lookup(oldUri, false);
let oldParent = this._lookupParentDirectory(oldUri);