2024-06-26 20:57:47 -05:00
|
|
|
{
|
|
|
|
|
writeShellApplication,
|
|
|
|
|
active,
|
|
|
|
|
distroFile,
|
|
|
|
|
|
|
|
|
|
curl,
|
|
|
|
|
minio-client,
|
|
|
|
|
packer,
|
|
|
|
|
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
|
inherit (builtins) concatStringsSep map;
|
|
|
|
|
in writeShellApplication {
|
|
|
|
|
name = "cache-isos";
|
|
|
|
|
runtimeInputs = [
|
|
|
|
|
curl
|
|
|
|
|
minio-client
|
|
|
|
|
packer
|
|
|
|
|
];
|
2024-06-26 21:50:10 -05:00
|
|
|
text = ''
|
2024-06-28 09:53:18 -05:00
|
|
|
push="''${1:-yes}"
|
|
|
|
|
if [ "$push" == "yes" ]; then
|
|
|
|
|
mc alias set storage "$STORAGE_URL" root "$MINIO_SECRET"
|
|
|
|
|
fi
|
2024-06-26 22:09:54 -05:00
|
|
|
mkdir -p cache
|
2024-06-26 21:50:10 -05:00
|
|
|
'' + (concatStringsSep "\n" (
|
2024-06-26 20:57:47 -05:00
|
|
|
map (d: ''
|
|
|
|
|
url=$(echo var.iso.url | packer console -var-file="${distroFile d}" -config-type=hcl2 sources/)
|
|
|
|
|
sha=$(echo var.iso.checksum | packer console -var-file="${distroFile d}" -config-type=hcl2 sources/)
|
2024-06-26 22:04:16 -05:00
|
|
|
# shellcheck disable=SC2143
|
|
|
|
|
if [ -z "$(mc ls storage/isos/cache/ | grep "$sha")" ]; then
|
2024-06-26 23:13:13 -05:00
|
|
|
curl -L --retry 3 --retry-all-errors -o "cache/$sha.iso" "$url"
|
2024-06-28 09:53:18 -05:00
|
|
|
if [ "$push" == "yes" ]; then
|
|
|
|
|
mc put "cache/$sha.iso" "storage/isos/cache/$sha.iso"
|
|
|
|
|
fi
|
2024-06-26 20:57:47 -05:00
|
|
|
else
|
|
|
|
|
echo "Skipping ${d.distro} - cache/$sha.iso"
|
|
|
|
|
fi
|
|
|
|
|
'') active
|
2024-06-26 21:50:10 -05:00
|
|
|
));
|
2024-06-26 20:57:47 -05:00
|
|
|
}
|