Update from Git Manager GUI

This commit is contained in:
2026-03-25 23:40:40 +01:00
parent b153431543
commit 78a94f2263

View File

@@ -136,6 +136,28 @@ async function createRepoGitHub({
body.license_template = license; body.license_template = license;
} }
const githubErrorsToText = (errors) => {
if (!Array.isArray(errors) || errors.length === 0) return '';
return errors
.map(err => {
if (!err) return '';
if (typeof err === 'string') return err;
const field = err.field ? `${err.field}: ` : '';
const message = err.message || err.code || '';
return `${field}${message}`.trim();
})
.filter(Boolean)
.join('; ');
};
const isGithubRepoAlreadyExists = (msg, errors) => {
const text = `${String(msg || '')} ${githubErrorsToText(errors)}`.toLowerCase();
if (text.includes('already exists')) return true;
if (text.includes('already_exists')) return true;
if (text.includes('name already exists')) return true;
return false;
};
try { try {
const response = await axiosInstance.post('https://api.github.com/user/repos', body, { const response = await axiosInstance.post('https://api.github.com/user/repos', body, {
headers: { Authorization: `token ${token}` } headers: { Authorization: `token ${token}` }
@@ -151,10 +173,11 @@ async function createRepoGitHub({
throw new Error('Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihren GitHub-Token.'); throw new Error('Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihren GitHub-Token.');
} else if (status === 422) { } else if (status === 422) {
const msg = data?.message || 'Repository konnte nicht erstellt werden'; const msg = data?.message || 'Repository konnte nicht erstellt werden';
if (msg.includes('name already exists')) { const details = githubErrorsToText(data?.errors);
if (isGithubRepoAlreadyExists(msg, data?.errors)) {
throw new Error(`Ein Repository mit dem Namen "${name}" existiert bereits.`); throw new Error(`Ein Repository mit dem Namen "${name}" existiert bereits.`);
} }
throw new Error(`GitHub-Fehler: ${msg}`); throw new Error(`GitHub-Fehler: ${msg}${details ? ` (${details})` : ''}`);
} else if (status === 403) { } else if (status === 403) {
throw new Error('Zugriff verweigert. Bitte überprüfen Sie Ihre Token-Berechtigungen.'); throw new Error('Zugriff verweigert. Bitte überprüfen Sie Ihre Token-Berechtigungen.');
} else { } else {
@@ -1336,6 +1359,22 @@ async function getGithubCurrentUser({ token }) {
return response.data; return response.data;
} }
async function githubRepoExists({ token, owner, repo }) {
if (!token) throw new Error('GitHub Token fehlt.');
if (!owner || !repo) throw new Error('Owner oder Repository fehlt.');
try {
await axiosInstance.get(`${GITHUB_API}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`, {
headers: githubHeaders(token),
timeout: 12000
});
return true;
} catch (error) {
if (error?.response?.status === 404) return false;
throw error;
}
}
async function getGithubUserHeatmap({ token, monthsBack = 20 }) { async function getGithubUserHeatmap({ token, monthsBack = 20 }) {
if (!token) throw new Error('GitHub Token fehlt.'); if (!token) throw new Error('GitHub Token fehlt.');
@@ -1870,6 +1909,16 @@ async function updateGithubRepoVisibility({ token, owner, repo, isPrivate }) {
return response.data; return response.data;
} }
async function updateGithubRepoDefaultBranch({ token, owner, repo, defaultBranch }) {
if (!defaultBranch) throw new Error('Default-Branch fehlt.');
const response = await axiosInstance.patch(
`${GITHUB_API}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`,
{ default_branch: String(defaultBranch).trim() },
{ headers: githubHeaders(token), timeout: 15000 }
);
return response.data;
}
async function updateGithubRepoTopics({ token, owner, repo, topics }) { async function updateGithubRepoTopics({ token, owner, repo, topics }) {
const response = await axiosInstance.put( const response = await axiosInstance.put(
`${GITHUB_API}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/topics`, `${GITHUB_API}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/topics`,
@@ -1947,6 +1996,7 @@ module.exports = {
// GitHub API // GitHub API
listGithubRepos, listGithubRepos,
getGithubCurrentUser, getGithubCurrentUser,
githubRepoExists,
getGithubUserHeatmap, getGithubUserHeatmap,
getGithubRepoContents, getGithubRepoContents,
getGithubFileContent, getGithubFileContent,
@@ -1962,6 +2012,7 @@ module.exports = {
editGithubRelease, editGithubRelease,
deleteGithubRelease, deleteGithubRelease,
updateGithubRepoVisibility, updateGithubRepoVisibility,
updateGithubRepoDefaultBranch,
updateGithubRepoTopics, updateGithubRepoTopics,
deleteGithubRepo deleteGithubRepo
}; };