import * as vscode from "vscode"; import { LLDBDapOptions } from "./types"; import { DisposableContext } from "./disposable-context"; import { LLDBDapDescriptorFactory } from "./debug-adapter-factory"; /** * This creates the configurations for this project if used as a standalone * extension. */ function createDefaultLLDBDapOptions(): LLDBDapOptions { return { debuggerType: "lldb-dap", async createDapExecutableCommand( session: vscode.DebugSession, packageJSONExecutable: vscode.DebugAdapterExecutable | undefined, ): Promise { const path = vscode.workspace .getConfiguration("lldb-dap", session.workspaceFolder) .get("executable-path"); if (path) { return new vscode.DebugAdapterExecutable(path, []); } return packageJSONExecutable; }, }; } /** * This class represents the extension and manages its life cycle. Other extensions * using it as as library should use this class as the main entry point. */ export class LLDBDapExtension extends DisposableContext { private lldbDapOptions: LLDBDapOptions; constructor(lldbDapOptions: LLDBDapOptions) { super(); this.lldbDapOptions = lldbDapOptions; this.pushSubscription( vscode.debug.registerDebugAdapterDescriptorFactory( this.lldbDapOptions.debuggerType, new LLDBDapDescriptorFactory(this.lldbDapOptions), ), ); } } /** * This is the entry point when initialized by VS Code. */ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( new LLDBDapExtension(createDefaultLLDBDapOptions()), ); }