So I have the below code, which has been working fine for several months, but at some point it stopped working, and I simply can't figure out why it isn't working anymore.
I did some debugging and for some reason the repository
is undefined.
import * as vscode from 'vscode';
import { Repository } from './git';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand("my_extension.my_command",
(repository: Repository) => {
repository.inputBox.value = "commit message goes here";
}));
}
Apparently if you have more than one repository open, my original code worked just fine, but if you only had one repository open, then repository
was undefined and I had to use the GetRepo
function to get the repository.
So my final code ended up looking like this:
import * as vscode from 'vscode';
import { Repository } from './git';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand("my_extension.my_command",
(repository: Repository) => {
repository = GetRepo(repository);
repository.inputBox.value = "commit message goes here";
}, { repository: true }));
}
function GetRepo(repository: Repository | undefined): Repository {
if (repository === undefined) {
let gitExtension = vscode.extensions.getExtension<GitExtension>('vscode.git').exports;
let api = gitExtension.getAPI(1);
repository = api.repositories[0];
}
return repository;
}