summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorRaindropsSys <raindrops@equestria.dev>2023-10-19 14:51:50 +0200
committerRaindropsSys <raindrops@equestria.dev>2023-10-19 14:51:50 +0200
commit97946a85a0b0055ce972c24edcd850ea2a0f5472 (patch)
treeb0270a96aa6fd4ff95baa094523933e6f23477e8 /includes
parentf84451deacda482b3df0e4d486a1c34e332fe3d5 (diff)
downloadhorses-97946a85a0b0055ce972c24edcd850ea2a0f5472.tar.gz
horses-97946a85a0b0055ce972c24edcd850ea2a0f5472.tar.bz2
horses-97946a85a0b0055ce972c24edcd850ea2a0f5472.zip
Updated 2 files (automated)
Diffstat (limited to 'includes')
-rw-r--r--includes/version.txt2
-rw-r--r--includes/youtrack/index.js347
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