123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- $`npm run assets`;
- [
- "amd64",
- "arm64",
- "ppc64le",
- "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",
- "./data/botPolicies.json": "botPolicies.json",
- "./data/botPolicies.yaml": "botPolicies.yaml",
- },
- build: ({ bin, etc, systemd, doc }) => {
- $`go build -o ${bin}/anubis -ldflags '-s -w -extldflags "-static" -X "github.com/TecharoHQ/anubis.Version=${git.tag()}"' ./cmd/anubis`;
- $`go build -o ${bin}/anubis-robots2policy -ldflags '-s -w -extldflags "-static" -X "github.com/TecharoHQ/anubis.Version=${git.tag()}"' ./cmd/robots2policy`;
- file.install("./run/anubis@.service", `${systemd}/anubis@.service`);
- file.install("./run/default.env", `${etc}/default.env`);
- $`mkdir -p ${doc}/docs`
- $`cp -a docs/docs ${doc}`;
- $`find ${doc} -name _category_.json -delete`;
- $`mkdir -p ${doc}/data`;
- $`cp -a data/apps ${doc}/data/apps`;
- $`cp -a data/bots ${doc}/data/bots`;
- $`cp -a data/clients ${doc}/data/clients`;
- $`cp -a data/common ${doc}/data/common`;
- $`cp -a data/crawlers ${doc}/data/crawlers`;
- $`cp -a data/meta ${doc}/data/meta`;
- },
- }));
- });
- // 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 bazaar 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}`,
- });
|