aboutsummaryrefslogtreecommitdiff
path: root/yeetfile.js
blob: 035de3c042d28777996c2aecda0a894bf2d009b7 (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
$`npm run assets`;

["amd64", "arm64", "riscv64"].forEach(goarch => {
    [deb, rpm, tarball].forEach(method => method.build({
        name: "anubis",
        description: "Anubis weighs the souls of incoming HTTP requests and uses a sha256 proof-of-work challenge in order to protect upstream resources from scraper bots.",
        homepage: "https://anubis.techaro.lol",
        license: "MIT",
        goarch,

        documentation: {
            "./README.md": "README.md",
            "./LICENSE": "LICENSE",
            "./docs/docs/CHANGELOG.md": "CHANGELOG.md",
            "./docs/docs/admin/policies.mdx": "policies.md",
            "./docs/docs/admin/native-install.mdx": "native-install.mdx",
            "./data/botPolicies.json": "botPolicies.json",
        },

        build: ({ bin, etc, systemd, out }) => {
            $`go build -o ${bin}/anubis -ldflags '-s -w -extldflags "-static" -X "github.com/TecharoHQ/anubis.Version=${git.tag()}"' ./cmd/anubis`;

            file.install("./run/anubis@.service", `${systemd}/anubis@.service`);
            file.install("./run/default.env", `${etc}/default.env`);
        },
    }));
});

// NOTE(Xe): Fixes #217. This is a "half baked" tarball that includes the harder
// parts for deterministic distros already done. Distributions like NixOS, Gentoo
// and *BSD ports have a difficult time fitting the square peg of their dependency
// model into the bazarr of round holes that various modern languages use. Needless
// to say, this makes adoption easier.
tarball.build({
    name: "anubis-src-vendor",
    license: "MIT",
    // XXX(Xe): This is needed otherwise go will be very sad.
    platform: yeet.goos,
    goarch: yeet.goarch,

    build: ({ out }) => {
        // prepare clean checkout in $out
        $`git archive --format=tar HEAD | tar xC ${out}`;
        // vendor Go dependencies
        $`cd ${out} && go mod vendor`;
        // write VERSION file
        $`echo ${git.tag()} > ${out}/VERSION`;
    },

    mkFilename: ({ name, version }) => `${name}-${version}`,
});

tarball.build({
    name: "anubis-src-vendor-npm",
    license: "MIT",
    // XXX(Xe): This is needed otherwise go will be very sad.
    platform: yeet.goos,
    goarch: yeet.goarch,

    build: ({ out }) => {
        // prepare clean checkout in $out
        $`git archive --format=tar HEAD | tar xC ${out}`;
        // vendor Go dependencies
        $`cd ${out} && go mod vendor`;
        // build NPM-bound dependencies
        $`cd ${out} && npm ci && npm run assets && rm -rf node_modules`
        // write VERSION file
        $`echo ${git.tag()} > ${out}/VERSION`;
    },

    mkFilename: ({ name, version }) => `${name}-${version}`,
});