mirror of
https://gitea.computerliebe.org/ComputerLiebe_ORG_private/Gitea-VSCode-Clone-Plugin.git
synced 2025-07-05 20:23:41 +00:00
* chore(gitea-git-clone): update changelog and package version
* feat(gitea-git-clone): add more verbose error handling * fix(gitea-git-clone): fix error message for pull request creation * fix(gitea-git-clone): fix error message for default branch retrieval * fix(gitea-git-clone): fix error message for repository retrieval * fix(gitea-git-clone): fix error message for authentication failure * fix(gitea-git-clone): fix error message for pull request retrieval * fix(gitea-git-clone): fix error message for pull request creation * fix(gitea-git-clone): fix error message for pull request retrieval * fix(gitea-git-clone): fix error message for pull request creation * fix(gitea-git-clone): fix error message for default branch retrieval * fix(gitea-git-clone): fix error message for repository
This commit is contained in:
@ -1,10 +1,25 @@
|
||||
import * as vscode from 'vscode';
|
||||
import axios from 'axios';
|
||||
import { AxiosError } from 'axios';
|
||||
import { exec } from 'child_process';
|
||||
import * as nls from 'vscode-nls';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
//Interface
|
||||
interface GiteaErrorResponse {
|
||||
message?: string;
|
||||
url?: string;
|
||||
documentation_url?: string;
|
||||
errors?: Array<{
|
||||
resource?: string;
|
||||
field?: string;
|
||||
code?: string;
|
||||
message?: string;
|
||||
}>;
|
||||
}
|
||||
|
||||
|
||||
// Initialisiere die Lokalisierung
|
||||
const localize = nls.config({ messageFormat: nls.MessageFormat.file })();
|
||||
|
||||
@ -88,7 +103,33 @@ async function createGiteaPullRequest() {
|
||||
vscode.env.openExternal(vscode.Uri.parse(prUrl));
|
||||
vscode.window.showInformationMessage(localize('giteaClone.pullRequestCreated', 'Pull request created successfully and opened in the browser.'));
|
||||
} catch (err: any) {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.pullRequestError', `Error creating pull request: ${err.message}`));
|
||||
let errMessage = '';
|
||||
|
||||
if (axios.isAxiosError(err)) {
|
||||
const axiosError = err as AxiosError;
|
||||
if (axiosError.response && axiosError.response.data) {
|
||||
const data = axiosError.response.data as GiteaErrorResponse;
|
||||
if (typeof data === 'string') {
|
||||
errMessage = data;
|
||||
} else if (data.message) {
|
||||
errMessage = data.message;
|
||||
}
|
||||
|
||||
// Optional: Weitere Details aus 'errors' extrahieren
|
||||
if (data.errors && Array.isArray(data.errors)) {
|
||||
data.errors.forEach((errorItem: any) => {
|
||||
if (errorItem.message) {
|
||||
errMessage += ` ${errorItem.message}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errMessage = err.message;
|
||||
}
|
||||
|
||||
let errorMessage = localize('giteaClone.pullRequestError', `Error creating pull request: ${errMessage}`);
|
||||
vscode.window.showErrorMessage(errorMessage);
|
||||
console.error('Error creating PR:', err);
|
||||
}
|
||||
});
|
||||
@ -138,8 +179,25 @@ async function getDefaultBranch(instanceUrl: string, owner: string, repo: string
|
||||
vscode.window.showErrorMessage(localize('giteaClone.defaultBranchError', 'Could not determine the base branch. Defaulting to "main".'));
|
||||
return 'main';
|
||||
}
|
||||
} catch (error) {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.defaultBranchError', 'Error retrieving the base branch. Defaulting to "main".'));
|
||||
} catch (err: any) {
|
||||
let errMessage = '';
|
||||
|
||||
if (axios.isAxiosError(err)) {
|
||||
const axiosError = err as AxiosError;
|
||||
if (axiosError.response && axiosError.response.data) {
|
||||
const data = axiosError.response.data as GiteaErrorResponse;
|
||||
if (typeof data === 'string') {
|
||||
errMessage = data;
|
||||
} else if (data.message) {
|
||||
errMessage = data.message;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errMessage = err.message;
|
||||
}
|
||||
|
||||
let errorMessage = localize('giteaClone.defaultBranchError', `Error retrieving the base branch: ${errMessage}`);
|
||||
vscode.window.showErrorMessage(errorMessage);
|
||||
return 'main';
|
||||
}
|
||||
}
|
||||
@ -167,9 +225,26 @@ async function getGiteaRepositories(): Promise<any[]> {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.repoError', 'Error retrieving repositories.'));
|
||||
return [];
|
||||
}
|
||||
} catch (error) {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.apiError', 'Error connecting to Gitea API.'));
|
||||
console.error(error);
|
||||
} catch (err: any) {
|
||||
let errMessage = '';
|
||||
|
||||
if (axios.isAxiosError(err)) {
|
||||
const axiosError = err as AxiosError;
|
||||
if (axiosError.response && axiosError.response.data) {
|
||||
const data = axiosError.response.data as GiteaErrorResponse;
|
||||
if (typeof data === 'string') {
|
||||
errMessage = data;
|
||||
} else if (data.message) {
|
||||
errMessage = data.message;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errMessage = err.message;
|
||||
}
|
||||
|
||||
let errorMessage = localize('giteaClone.repoError', `Error retrieving repositories: ${errMessage}`);
|
||||
vscode.window.showErrorMessage(errorMessage);
|
||||
console.error(err);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@ -282,9 +357,26 @@ async function authenticateGitea() {
|
||||
if (response.status === 200) {
|
||||
vscode.window.showInformationMessage(localize('giteaClone.authSuccess', `Authentication successful: ${response.data.username}`));
|
||||
}
|
||||
} catch (error) {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.authFailed', 'Authentication failed.'));
|
||||
console.error(error);
|
||||
} catch (err: any) {
|
||||
let errMessage = '';
|
||||
|
||||
if (axios.isAxiosError(err)) {
|
||||
const axiosError = err as AxiosError;
|
||||
if (axiosError.response && axiosError.response.data) {
|
||||
const data = axiosError.response.data as GiteaErrorResponse;
|
||||
if (typeof data === 'string') {
|
||||
errMessage = data;
|
||||
} else if (data.message) {
|
||||
errMessage = data.message;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errMessage = err.message;
|
||||
}
|
||||
|
||||
let errorMessage = localize('giteaClone.authFailed', `Authentication failed: ${errMessage}`);
|
||||
vscode.window.showErrorMessage(errorMessage);
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
@ -350,9 +442,26 @@ async function getOpenPullRequests(): Promise<any[]> {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.pullRequestsError', 'Fehler beim Abrufen der Pull Requests.'));
|
||||
return [];
|
||||
}
|
||||
} catch (error) {
|
||||
vscode.window.showErrorMessage(localize('giteaClone.apiError', 'Fehler bei der Verbindung zur Gitea API.'));
|
||||
console.error(error);
|
||||
} catch (err: any) {
|
||||
let errMessage = '';
|
||||
|
||||
if (axios.isAxiosError(err)) {
|
||||
const axiosError = err as AxiosError;
|
||||
if (axiosError.response && axiosError.response.data) {
|
||||
const data = axiosError.response.data as GiteaErrorResponse;
|
||||
if (typeof data === 'string') {
|
||||
errMessage = data;
|
||||
} else if (data.message) {
|
||||
errMessage = data.message;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errMessage = err.message;
|
||||
}
|
||||
|
||||
let errorMessage = localize('giteaClone.pullRequestsError', `Error retrieving pull requests: ${errMessage}`);
|
||||
vscode.window.showErrorMessage(errorMessage);
|
||||
console.error(err);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@ -408,12 +517,9 @@ async function showOpenPullRequests() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let extensionContext: vscode.ExtensionContext;
|
||||
|
||||
// Funktion zum Aktualisieren des PR-Statusleisten-Icons
|
||||
let prStatusBarItem: vscode.StatusBarItem;
|
||||
|
||||
// Funktion zum Aktualisieren des PR-Statusleisten-Icons
|
||||
async function updatePRStatusBarItem(context: vscode.ExtensionContext) {
|
||||
try {
|
||||
const pullRequests = await getOpenPullRequests();
|
||||
@ -451,7 +557,6 @@ function startPRStatusBarItemUpdater(context: vscode.ExtensionContext) {
|
||||
setInterval(() => updatePRStatusBarItem(context), 300000); // 5 Minuten
|
||||
}
|
||||
|
||||
|
||||
// Aktivierungsfunktion des Plugins
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
// Registriert den Befehl zur Authentifizierung
|
||||
|
Reference in New Issue
Block a user