1 import { commands, type Disposable } from "vscode";
3 export const extensionName = "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 extensionName + "." + 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 extensionName + "." + this.commandId,
32 this.execute.bind(this)
36 abstract execute(): Promise<T> | T;
39 export abstract class CommandWithArgs {
40 private readonly commandId: string;
42 protected constructor(commandId: string) {
43 this.commandId = commandId;
46 register(): Disposable {
47 return commands.registerCommand(
48 extensionName + "." + this.commandId,
49 this.execute.bind(this)
53 abstract execute(...args: unknown[]): Promise<void> | void;