* feat(extension.ts): add support for retrieving default base branch from Gitea API

* fix(extension.ts): handle errors when retrieving default base branch from Gitea API
This commit is contained in:
Peter 2024-10-21 01:39:31 +02:00
parent b5f132db7c
commit 011e20b499
Signed by: Peter
GPG Key ID: 90EA41BD0E1A2600

View File

@ -46,22 +46,20 @@ async function createGiteaPullRequest() {
const { title, body } = await getLastCommit(currentWorkspaceFolder);
const branch = await getCurrentBranch(currentWorkspaceFolder);
// Debugging-Ausgabe zur Überprüfung
console.log('Branch:', branch);
console.log('Title:', title);
console.log('Body:', body);
if (!branch) {
vscode.window.showErrorMessage('Branch konnte nicht ermittelt werden.');
return;
}
// Base-Branch über die Gitea API ermitteln
const baseBranch = await getDefaultBranch(instanceUrl, owner, repo, token);
// API-Request-Daten vorbereiten
const prData = {
title: title, // Der letzte Commit als Titel
body: body || '', // Commit-Kommentare als Body
head: branch, // Der aktuelle Branch als "head"
base: 'main' // Standardmäßig auf 'main' als Basisbranch
base: baseBranch // Der ermittelte base-Branch
};
const config = {
@ -83,8 +81,8 @@ async function createGiteaPullRequest() {
// Öffne die URL des erstellten PRs im Browser
vscode.env.openExternal(vscode.Uri.parse(prUrl));
vscode.window.showInformationMessage('Pull-Request erfolgreich erstellt und im Browser geöffnet.');
} catch (err: unknown) {
vscode.window.showErrorMessage('Fehler beim Erstellen des Pull Requests.');
} catch (err: any) {
vscode.window.showErrorMessage(`Fehler beim Erstellen des Pull Requests: ${err.message}`);
console.error('Fehler beim Erstellen des PRs:', err);
}
});
@ -119,13 +117,34 @@ async function getCurrentBranch(folderPath: string): Promise<string> {
});
}
// Hilfsfunktion, um den base-Branch über die Gitea API zu ermitteln
async function getDefaultBranch(instanceUrl: string, owner: string, repo: string, token: string): Promise<string> {
try {
const response = await axios.get(`${instanceUrl}/api/v1/repos/${owner}/${repo}`, {
headers: {
'Authorization': `token ${token}`
}
});
if (response.status === 200 && response.data.default_branch) {
return response.data.default_branch;
} else {
vscode.window.showErrorMessage('Konnte den base-Branch nicht ermitteln. Standardmäßig "main" verwendet.');
return 'main';
}
} catch (error) {
vscode.window.showErrorMessage('Fehler beim Abrufen des base-Branches. Standardmäßig "main" verwendet.');
return 'main';
}
}
// Funktion zum Hinzufügen des Statusbar-Icons
function addStatusBarIcon() {
const statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
statusBar.text = `$(git-pull-request) Create PR`;
statusBar.tooltip = 'Create a Pull Request in Gitea';
statusBar.command = 'gitea.createPullRequest';
statusBar.show();
statusBar.show(); // Sofortiges Anzeigen
return statusBar;
}
@ -189,7 +208,7 @@ export function activate(context: vscode.ExtensionContext) {
let pullRequestCommand = vscode.commands.registerCommand('gitea.createPullRequest', createGiteaPullRequest);
context.subscriptions.push(pullRequestCommand);
// Statusbar-Icon hinzufügen
// Statusbar-Icon sofort anzeigen
const statusBar = addStatusBarIcon();
context.subscriptions.push(statusBar);
}