MCPcopy Create free account
hub / github.com/Botloader/botloader / activate

Function activate

botloader-vscode/src/extension.ts:19–178  ·  view source on GitHub ↗
(context: vscode.ExtensionContext)

Source from the content-addressed store, hash-verified

17// this method is called when your extension is activated
18// your extension is activated the very first time the command is executed
19export async function activate(context: vscode.ExtensionContext) {
20
21 let outputChannel = vscode.window.createOutputChannel("Botloader");
22 context.subscriptions.push(outputChannel);
23
24 let token = await context.secrets.get("botloader-api-key");
25
26 const config = vscode.workspace.getConfiguration("botloader");
27 const apiBase: string = config.get("apiHost")!;
28 const apiHttps: boolean = config.get("apiHttpsEnabled")!;
29
30 const httpApiBase = apiHttps ? "https://" + apiBase : "http://" + apiBase;
31 const wsApiBase = apiHttps ? "wss://" + apiBase : "ws://" + apiBase;
32
33 let ws = new BotloaderWS(wsApiBase, handleLogMessage, token);
34 let apiClient = new ApiClient(createFetcher(), httpApiBase, token);
35
36 let manager = new WorkspaceManager(apiClient, ws, outputChannel);
37 context.subscriptions.push(manager);
38
39 await updateTypeDecls(context);
40
41 context.subscriptions.push(vscode.commands.registerCommand('botloader-vscode.setup-workspace', async () => {
42 // The code you place here will be executed every time your command is executed
43 // Display a message box to the user
44 let resp = await apiClient.getCurrentUserGuilds();
45 if (isErrorResponse(resp)) {
46 vscode.window.showErrorMessage("Invalid token:" + JSON.stringify(resp));
47 return;
48 }
49
50 let typeSelection = await vscode.window.showQuickPick(["Temp folder", "Pick folder"], {
51 canPickMany: false,
52 title: "Workspace folder",
53 });
54
55 let folder: vscode.Uri | undefined = undefined;
56 if (typeSelection === "Temp folder") {
57 let tmpDir = await mkdtemp(join(tmpdir(), "botloader"));
58 folder = vscode.Uri.parse("file:/" + tmpDir);
59 } else {
60 let selected = await vscode.window.showOpenDialog({
61 canSelectFiles: false,
62 canSelectFolders: true,
63 canSelectMany: false,
64 title: "Folder to set up guild workspace in",
65 });
66 if (selected && selected.length > 0) {
67 folder = selected[0];
68 }
69 }
70
71 if (!folder) {
72 return;
73 }
74
75 const filtered = resp.guilds.filter(elem => elem.connected && hasAdmin(elem.guild));
76 let selection = await vscode.window.showQuickPick(filtered.map(elem => `${elem.guild.name} (${elem.guild.id})`), {

Callers

nothing calls this directly

Calls 15

getCurrentUserGuildsMethod · 0.95
getCurrentUserMethod · 0.95
setTokenMethod · 0.95
pushUriMethod · 0.95
pushScmGroupMethod · 0.95
pushOneRepoMethod · 0.95
pushRepoMethod · 0.95
syncOneMethod · 0.95
syncScmMethod · 0.95
createFetcherFunction · 0.90
updateTypeDeclsFunction · 0.85
isErrorResponseFunction · 0.85

Tested by

no test coverage detected