aboutsummaryrefslogtreecommitdiff
path: root/hooks/update.js
blob: f8718898ff471d990b2ab6d798bcdb8dbb01cbea (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
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, "#");
        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
        }

        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));

        index++;
    }

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