1 import { commands, type Disposable } from "vscode";
3 const extensionId = "raspberry-pi-pico";
5 export abstract class Command {
6 private readonly commandId: string;
8 protected constructor(commandId: string) {
9 this.commandId = commandId;
12 register(): Disposable {
13 return commands.registerCommand(
14 extensionId + "." + this.commandId,
15 this.execute.bind(this)
19 abstract execute(): Promise<void> | void;
22 export abstract class CommandWithResult<T> {
23 private readonly commandId: string;
25 protected constructor(commandId: string) {
26 this.commandId = commandId;
29 register(): Disposable {
30 return commands.registerCommand(
31 extensionId + "." + this.commandId,
32 this.execute.bind(this)
36 abstract execute(): Promise<T> | T;