aboutsummaryrefslogtreecommitdiff
path: root/hooks/update.js
blob: edfa79ce7c425ed87b7ab7daba1848edfe62caaa (plain)
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
module.exports = async () => {
    const spinner = ora("Fetching package lists...").start();
    let list = (await axios.get("https://twipkg.cdn.minteck.org/packages.json")).data;

    if (fs.existsSync(home + "/repository")) {
        fs.rmSync(home + "/repository", { recursive: true });
    }
    fs.mkdirSync(home + "/repository");

    fs.writeFileSync(home + "/repository/list.json", JSON.stringify(list));

    let index = 0;
    for (let pkg of list) {
        spinner.text = "Fetching package lists... " + Math.round((index / list.length) * 100) + "%";
        let dir = pkg.substring(0, 1).replace(/[^a-zA-Z0-9]/gm, "#");
        try {
            let pack = (await axios.get("https://twipkg.cdn.minteck.org/" + dir + "/" + pkg + ".json")).data;

            let verdata = (await axios.get(pack.version)).data;
            pack.verdata = {
                latest: verdata.commit.short_id,
                publisher: {
                    name: verdata.commit.author_name,
                    email: verdata.commit.author_email
                },
                date: verdata.commit.created_at
            }

            if (typeof pack.pointrelease === "string") {
                pack.verdata.latest = pack.pointrelease;
            }

            let signRaw = { error: "404 Not Found" };
            try {
                signRaw = (await axios.get(pack.signature.replace("{version}", verdata.commit.id))).data;
            } catch (e) {}
            pack.sign = {
                signed: false,
                verified: false,
                key: null,
                signer: {
                    name: null,
                    email: null
                }
            }
            if (signRaw.error !== "404 Not Found") {
                pack.sign.signed = true;
                if (signRaw.verification_status === "verified") {
                    pack.sign.verified = true;
                } else {
                    pack.sign.verified = false;
                }
                if (signRaw.gpg_key_user_name) {
                    pack.sign.signer.name = signRaw.gpg_key_user_name;
                }
                if (signRaw.gpg_key_user_email) {
                    pack.sign.signer.email = signRaw.gpg_key_user_email;
                }
                if (signRaw.gpg_key_primary_keyid) {
                    pack.sign.key = signRaw.gpg_key_primary_keyid;
                }
            }

            if (!fs.existsSync(home + "/repository/" + dir)) {
                fs.mkdirSync(home + "/repository/" + dir);
            }
            fs.writeFileSync(home + "/repository/" + dir + "/" + pkg + ".json", JSON.stringify(pack));
        } catch (e) {
            console.log("\n" + c.yellow("warn:") + " package '" + pkg + "' is not available on the repository yet");
        }

        index++;
    }

    spinner.succeed("Fetching package lists... done");
    //process.exit();
}