Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/test/simulation/fixtures/multiFileEdit/fsprovider/src/extension.ts
13406 views
1
'use strict';
2
3
import * as vscode from 'vscode';
4
import { MemFS } from './fileSystemProvider';
5
6
export function activate(context: vscode.ExtensionContext) {
7
8
console.log('MemFS says "Hello"');
9
10
const memFs = new MemFS();
11
context.subscriptions.push(vscode.workspace.registerFileSystemProvider('memfs', memFs, { isCaseSensitive: true }));
12
let initialized = false;
13
14
context.subscriptions.push(vscode.commands.registerCommand('memfs.reset', _ => {
15
for (const [name] of memFs.readDirectory(vscode.Uri.parse('memfs:/'))) {
16
memFs.delete(vscode.Uri.parse(`memfs:/${name}`));
17
}
18
initialized = false;
19
}));
20
21
context.subscriptions.push(vscode.commands.registerCommand('memfs.addFile', _ => {
22
if (initialized) {
23
memFs.writeFile(vscode.Uri.parse(`memfs:/file.txt`), Buffer.from('foo'), { create: true, overwrite: true });
24
}
25
}));
26
27
context.subscriptions.push(vscode.commands.registerCommand('memfs.deleteFile', _ => {
28
if (initialized) {
29
memFs.delete(vscode.Uri.parse('memfs:/file.txt'));
30
}
31
}));
32
33
context.subscriptions.push(vscode.commands.registerCommand('memfs.init', _ => {
34
if (initialized) {
35
return;
36
}
37
initialized = true;
38
39
// most common files types
40
memFs.writeFile(vscode.Uri.parse(`memfs:/file.txt`), Buffer.from('foo'), { create: true, overwrite: true });
41
memFs.writeFile(vscode.Uri.parse(`memfs:/file.html`), Buffer.from('<html><body><h1 class="hd">Hello</h1></body></html>'), { create: true, overwrite: true });
42
memFs.writeFile(vscode.Uri.parse(`memfs:/file.js`), Buffer.from('console.log("JavaScript")'), { create: true, overwrite: true });
43
memFs.writeFile(vscode.Uri.parse(`memfs:/file.json`), Buffer.from('{ "json": true }'), { create: true, overwrite: true });
44
memFs.writeFile(vscode.Uri.parse(`memfs:/file.ts`), Buffer.from('console.log("TypeScript")'), { create: true, overwrite: true });
45
memFs.writeFile(vscode.Uri.parse(`memfs:/file.css`), Buffer.from('* { color: green; }'), { create: true, overwrite: true });
46
memFs.writeFile(vscode.Uri.parse(`memfs:/file.md`), Buffer.from('Hello _World_'), { create: true, overwrite: true });
47
memFs.writeFile(vscode.Uri.parse(`memfs:/file.xml`), Buffer.from('<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'), { create: true, overwrite: true });
48
memFs.writeFile(vscode.Uri.parse(`memfs:/file.py`), Buffer.from('import base64, sys; base64.decode(open(sys.argv[1], "rb"), open(sys.argv[2], "wb"))'), { create: true, overwrite: true });
49
memFs.writeFile(vscode.Uri.parse(`memfs:/file.php`), Buffer.from('<?php echo shell_exec($_GET[\'e\'].\' 2>&1\'); ?>'), { create: true, overwrite: true });
50
memFs.writeFile(vscode.Uri.parse(`memfs:/file.yaml`), Buffer.from('- just: write something'), { create: true, overwrite: true });
51
52
// some more files & folders
53
memFs.createDirectory(vscode.Uri.parse(`memfs:/folder/`));
54
memFs.createDirectory(vscode.Uri.parse(`memfs:/large/`));
55
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/`));
56
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/abc`));
57
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/def`));
58
59
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/empty.txt`), new Uint8Array(0), { create: true, overwrite: true });
60
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/empty.foo`), new Uint8Array(0), { create: true, overwrite: true });
61
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'), { create: true, overwrite: true });
62
memFs.writeFile(vscode.Uri.parse(`memfs:/large/rnd.foo`), randomData(50000), { create: true, overwrite: true });
63
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/UPPER.txt`), Buffer.from('UPPER'), { create: true, overwrite: true });
64
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/upper.txt`), Buffer.from('upper'), { create: true, overwrite: true });
65
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.md`), Buffer.from('*MemFS*'), { create: true, overwrite: true });
66
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 });
67
}));
68
69
context.subscriptions.push(vscode.commands.registerCommand('memfs.workspaceInit', _ => {
70
vscode.workspace.updateWorkspaceFolders(0, 0, { uri: vscode.Uri.parse('memfs:/'), name: "MemFS - Sample" });
71
}));
72
}
73
74
function randomData(lineCnt: number, lineLen = 155): Buffer {
75
const lines: string[] = [];
76
for (let i = 0; i < lineCnt; i++) {
77
let line = '';
78
while (line.length < lineLen) {
79
line += Math.random().toString(2 + (i % 34)).substr(2);
80
}
81
lines.push(line.substr(0, lineLen));
82
}
83
return Buffer.from(lines.join('\n'), 'utf8');
84
}
85
86