nuke/yeetfile.js
fucksophie 02b9aebbe5
Some checks failed
Docker image builds / build (push) Failing after 4m22s
NUKE
2026-02-07 14:27:38 +02:00

83 lines
2.8 KiB
JavaScript

$`npm run assets`;
["amd64", "arm64", "ppc64le", "riscv64"].forEach((goarch) => {
[deb, rpm, tarball].forEach((method) =>
method.build({
name: "nuke",
description: "nuke is cool and awesome",
homepage: "https://git.sad.ovh/sophie/nuke",
license: "MIT",
goarch,
documentation: {
"./README.md": "README.md",
"./LICENSE": "LICENSE",
"./data/botPolicies.yaml": "botPolicies.yaml",
},
build: ({ bin, etc, systemd, doc }) => {
$`go build -o ${bin}/nuke -ldflags '-s -w -extldflags "-static" -X "git.sad.ovh/sophie/nuke.Version=${git.tag()}"' ./cmd/nuke`;
$`go build -o ${bin}/nuke-robots2policy -ldflags '-s -w -extldflags "-static" -X "git.sad.ovh/sophie/nuke.Version=${git.tag()}"' ./cmd/robots2policy`;
file.install("./run/nuke@.service", `${systemd}/nuke@.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: "nuke-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: "nuke-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}`,
});