diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-10-19 14:51:50 +0200 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-10-19 14:51:50 +0200 |
commit | 97946a85a0b0055ce972c24edcd850ea2a0f5472 (patch) | |
tree | b0270a96aa6fd4ff95baa094523933e6f23477e8 /includes | |
parent | f84451deacda482b3df0e4d486a1c34e332fe3d5 (diff) | |
download | horses-97946a85a0b0055ce972c24edcd850ea2a0f5472.tar.gz horses-97946a85a0b0055ce972c24edcd850ea2a0f5472.tar.bz2 horses-97946a85a0b0055ce972c24edcd850ea2a0f5472.zip |
Updated 2 files (automated)
Diffstat (limited to 'includes')
-rw-r--r-- | includes/version.txt | 2 | ||||
-rw-r--r-- | includes/youtrack/index.js | 347 |
2 files changed, 178 insertions, 171 deletions
diff --git a/includes/version.txt b/includes/version.txt index 0510f29..898a66d 100644 --- a/includes/version.txt +++ b/includes/version.txt @@ -1 +1 @@ -12.7.0
\ No newline at end of file +12.7.1
\ No newline at end of file diff --git a/includes/youtrack/index.js b/includes/youtrack/index.js index b53b095..790d065 100644 --- a/includes/youtrack/index.js +++ b/includes/youtrack/index.js @@ -34,153 +34,180 @@ function generateShortName(name) { } (async () => { - await axios.post("https://account.equestria.dev/hub/api/rest/roles/15f32332-f7a0-4e3d-83cb-e869585416b0/reset", {}, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - }) + try { + await axios.post("https://account.equestria.dev/hub/api/rest/roles/15f32332-f7a0-4e3d-83cb-e869585416b0/reset", {}, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + }) - let token = (await axios.post("https://account.equestria.dev/hub/api/rest/oauth2/token", "grant_type=client_credentials&scope=Hub", { - headers: { - Authorization: "Basic " + Buffer.from(secrets.service).toString("base64") - } - })).data['access_token']; - - (await axios.post("https://account.equestria.dev/hub/api/rest/services/8e42c269-353c-43d1-ab27-b90eb297ff21", { - vendor: "GitLab Inc.", - applicationName: "GitLab Enterprise Edition", - version: (await axios.get("https://source.equestria.dev/api/v4/version?private_token=" + secrets.gitlab)).data.version - }, { - headers: { - Authorization: "Bearer " + token - } - })); + let token = (await axios.post("https://account.equestria.dev/hub/api/rest/oauth2/token", "grant_type=client_credentials&scope=Hub", { + headers: { + Authorization: "Basic " + Buffer.from(secrets.service).toString("base64") + } + })).data['access_token']; + + (await axios.post("https://account.equestria.dev/hub/api/rest/services/8e42c269-353c-43d1-ab27-b90eb297ff21", { + vendor: "GitLab Inc.", + applicationName: "GitLab Enterprise Edition", + version: (await axios.get("https://source.equestria.dev/api/v4/version?private_token=" + secrets.gitlab)).data.version + }, { + headers: { + Authorization: "Bearer " + token + } + })); - let projects = []; - let page = 1; - let results = [null]; + let projects = []; + let page = 1; + let results = [null]; - while (results.length > 0) { - results = (await axios.get("https://source.equestria.dev/api/v4/groups/2/projects?page=" + page + "&private_token=" + secrets.gitlab)).data; - projects.push(...results); - page++; - } + while (results.length > 0) { + results = (await axios.get("https://source.equestria.dev/api/v4/groups/2/projects?page=" + page + "&private_token=" + secrets.gitlab)).data; + projects.push(...results); + page++; + } - for (let project of projects) { - console.log("[" + project.id + "] " + project.path + (project['archived'] && project['private'] ? " (archived, private)" : (project['archived'] ? " (archived)" : (project['private'] ? " (private)" : "")))); + for (let project of projects) { + global.project = project; + console.log("[" + project.id + "] " + project.path + (project['archived'] && project['private'] ? " (archived, private)" : (project['archived'] ? " (archived)" : (project['private'] ? " (private)" : "")))); - found.push(project.id.toString()); + found.push(project.id.toString()); - if (!Object.keys(list).includes(project['id'].toString())) { - list[project.id] = { - id: (await axios.post("https://bugs.equestria.dev/api/admin/projects", { - name: project.name, + if (!Object.keys(list).includes(project['id'].toString())) { + list[project.id] = { + id: (await axios.post("https://bugs.equestria.dev/api/admin/projects", { + name: project.name, + shortName: generateShortName(project.path), + leader: { + id: "1-0" + } + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data.id, shortName: generateShortName(project.path), - leader: { - id: "1-0" - } - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack + organization: { + id: project['private'] ? "297eeed8-a9f2-45f6-8c17-6543f25930bb" : "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } - })).data.id, - shortName: generateShortName(project.path), - organization: { - id: project['private'] ? "297eeed8-a9f2-45f6-8c17-6543f25930bb" : "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" - } - }; - - console.log(" Created on YouTrack with ID " + list[project.id].id + " and name " + list[project.id].shortName); - } else if (Object.keys(list).includes(project['id'])) { - console.log(" Project is already on YouTrack"); - } + }; - fs.writeFileSync("list.json", JSON.stringify(list, null, 2)); - } + console.log(" Created on YouTrack with ID " + list[project.id].id + " and name " + list[project.id].shortName); + } else if (Object.keys(list).includes(project['id'])) { + console.log(" Project is already on YouTrack"); + } - console.log("Running tasks..."); + fs.writeFileSync("list.json", JSON.stringify(list, null, 2)); + } - for (let project in list) { - console.log(" " + project + ": " + list[project]["id"]); + console.log("Running tasks..."); - if (!found.includes(project)) { - console.log(" => Preparing to delete"); + for (let project in list) { + console.log(" " + project + ": " + list[project]["id"]); - let hub = (await axios.get("https://account.equestria.dev/hub/api/rest/projects?archived=true", { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data['projects']; + if (!found.includes(project)) { + console.log(" => Preparing to delete"); - for (let prj of hub) { - if (!list[project]) continue; - process.stdout.write(" " + prj.id + ": " + prj.name); + let hub = (await axios.get("https://account.equestria.dev/hub/api/rest/projects?archived=true", { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data['projects']; - let id = prj['resources'].filter(i => i.key)[0].id; - let yt = null; + for (let prj of hub) { + if (!list[project]) continue; + process.stdout.write(" " + prj.id + ": " + prj.name); - try { - yt = (await axios.get("https://bugs.equestria.dev/api/admin/projects/" + id, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data.id; - } catch (e) {} + let id = prj['resources'].filter(i => i.key)[0].id; + let yt = null; - console.log(": " + yt); + try { + yt = (await axios.get("https://bugs.equestria.dev/api/admin/projects/" + id, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data.id; + } catch (e) {} - if (yt === list[project]["id"]) { - console.log(" Matching!"); + console.log(": " + yt); - (await axios.delete("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; + if (yt === list[project]["id"]) { + console.log(" Matching!"); - (await axios.delete("https://bugs.equestria.dev/api/admin/projects/" + list[project]["id"], { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; + (await axios.delete("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; - delete list[project]; - } - } - } else { - console.log(" => Preparing to sync"); - let gitea = projects.filter(i => i.id.toString() === project)[0]; + (await axios.delete("https://bugs.equestria.dev/api/admin/projects/" + list[project]["id"], { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; - let hub = (await axios.get("https://account.equestria.dev/hub/api/rest/projects?archived=true", { - headers: { - Authorization: "Bearer " + secrets.youtrack + delete list[project]; + } } - })).data['projects']; - - for (let prj of hub) { - process.stdout.write(" " + prj.id + ": " + prj.name); + } else { + console.log(" => Preparing to sync"); + let gitea = projects.filter(i => i.id.toString() === project)[0]; - let id = prj['resources'].filter(i => i.key)[0].id; - let yt = null; + let hub = (await axios.get("https://account.equestria.dev/hub/api/rest/projects?archived=true", { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data['projects']; - try { - yt = (await axios.get("https://bugs.equestria.dev/api/admin/projects/" + id, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data.id; - } catch (e) {} + for (let prj of hub) { + process.stdout.write(" " + prj.id + ": " + prj.name); - console.log(": " + yt); + let id = prj['resources'].filter(i => i.key)[0].id; + let yt = null; - if (yt === list[project]["id"]) { - console.log(" Matching!"); + try { + yt = (await axios.get("https://bugs.equestria.dev/api/admin/projects/" + id, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data.id; + } catch (e) {} + + console.log(": " + yt); + + if (yt === list[project]["id"]) { + console.log(" Matching!"); + + if (yt !== "0-463") { + if (gitea['archived']) { + if (gitea['visibility'] !== "public") { + (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { + archived: true, + organization: { + id: "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; + } else { + (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { + archived: true, + organization: { + id: "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; + } + } - if (yt !== "0-463") { - if (gitea['archived']) { if (gitea['visibility'] !== "public") { + console.log(" Marking as private"); (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - archived: true, organization: { id: "297eeed8-a9f2-45f6-8c17-6543f25930bb" } @@ -190,8 +217,8 @@ function generateShortName(name) { } })).data; } else { + console.log(" Marking as public"); (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - archived: true, organization: { id: "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } @@ -203,68 +230,48 @@ function generateShortName(name) { } } - if (gitea['visibility'] !== "public") { - console.log(" Marking as private"); - (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - organization: { - id: "297eeed8-a9f2-45f6-8c17-6543f25930bb" - } - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; - } else { - console.log(" Marking as public"); - (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - organization: { - id: "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" - } - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; - } - } - - (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - description: gitea['description'] - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; - - (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - name: gitea['name'] - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; - - (await axios.post("https://bugs.equestria.dev/api/admin/projects/" + yt, { - name: gitea['name'] - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; + (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { + description: gitea['description'] + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; - if (gitea['avatar_url']) { (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - icon: "data:image/png;base64," + (await axios.get(gitea['avatar_url'], { responseType: 'arraybuffer' })).data.toString("base64") + name: gitea['name'] }, { headers: { Authorization: "Bearer " + secrets.youtrack } })).data; + + (await axios.post("https://bugs.equestria.dev/api/admin/projects/" + yt, { + name: gitea['name'] + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; + + if (gitea['avatar_url'] && gitea['visibility'] === "public") { + (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { + icon: "data:image/png;base64," + (await axios.get(gitea['avatar_url'], { responseType: 'arraybuffer' })).data.toString("base64") + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; + } } } } } - } - fs.writeFileSync("list.json", JSON.stringify(list, null, 2)); + fs.writeFileSync("list.json", JSON.stringify(list, null, 2)); + } catch (e) { + console.error(e); + console.log("[" + project.id + "] " + project.path + (project['archived'] && project['private'] ? " (archived, private)" : (project['archived'] ? " (archived)" : (project['private'] ? " (private)" : "")))); + process.exit(2); + } })();
\ No newline at end of file |