1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
global.log = require('./log')
global.serverRoot = __dirname + "/..";
global.fs = require('fs')
log.info("Reading configuration...")
global.config = require('../global/config.json')
log.verbose("Initializing Gitea projects refresh...")
function giteaRefresh() {
giteaDataTmp = [];
repos = [];
log.info("Refreshing Gitea cache...")
orgs_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/orgs', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
let orgs = [];
for (let org of orgs_raw) {
orgs.push(org.username);
}
log.verbose("Found " + orgs.length + " orgs");
let orgs_mtk = [];
for (let org of orgs) {
log.verbose("Gathering members of '" + org + "'...");
members_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/orgs/' + org + '/members', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
let members = [];
for (let member of members_raw) {
members.push(member.login);
}
log.verbose("Has " + members.length + " members");
if (members.includes("minteck")) {
log.verbose("Includes Minteck, adding to list");
orgs_mtk.push(org);
} else {
log.verbose("Doesn't include Minteck, not adding to list");
}
}
log.verbose("Minteck part of " + orgs_mtk.length + "/" + orgs.length + " orgs, exclusing themself");
log.verbose("Gathering personal projects");
personal_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/users/minteck/repos', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
for (let repo of personal_raw) {
repos.push(repo.full_name);
}
for (let org of orgs_mtk) {
log.verbose("Gathering projects from '" + org + "'");
org_projects_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/users/' + org + '/repos', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
for (let repo of org_projects_raw) {
repos.push(repo.full_name);
}
}
log.verbose("Found " + repos.length + " projects: " + repos.join(", "));
for (let repo of repos) {
thisRepo = {};
log.verbose("Gathering info about " + repo);
repo_data = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/repos/' + repo, '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
if (!thisRepo.empty && !thisRepo.private && !thisRepo.internal) {
thisRepo.name = repo_data.full_name.trim() !== "" ? repo_data.full_name : null;
thisRepo.icon = repo_data.avatar_url.trim() !== "" ? repo_data.avatar_url : null;
thisRepo.size = repo_data.size;
thisRepo.website = repo_data.website.trim() !== "" ? repo_data.website : null;
thisRepo.update = repo_data.updated_at.trim() !== "" ? repo_data.updated_at : null;
sattelite_data = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/repos/' + repo + '/contents/SatteliteGiteaData.txt', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
if (!sattelite_data.documentation_url) {
thisRepo.name = Buffer.from(sattelite_data.content, "base64").toString();
}
giteaDataTmp.push(thisRepo);
}
}
fs.writeFileSync("../global/gitea.json", JSON.stringify(giteaDataTmp, null, 4));
log.info("Gitea cache successfully refreshed");
}
setInterval(() => {
try {
giteaRefresh()
} catch (e) {
log.error("Gitea projects refresh failed: " + e.message)
}
}, 3600000)
setTimeout(() => {
try {
giteaRefresh()
} catch (e) {
log.error("Gitea projects refresh failed: " + e.message)
}
}, 1000)
|