mirror of https://gitlab.com/famedly/conduit.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
#!/usr/bin/env bash |
|
|
|
set -euo pipefail |
|
|
|
# Build the installable and forward any other arguments too. Also, use |
|
# nix-output-monitor instead if it's available. |
|
if command -v nom &> /dev/null; then |
|
nom build "$@" |
|
else |
|
nix build "$@" |
|
fi |
|
|
|
if [ ! -z ${ATTIC_TOKEN+x} ]; then |
|
nix run --inputs-from . attic -- \ |
|
login \ |
|
conduit \ |
|
"${ATTIC_ENDPOINT:-https://attic.mnzn.dev/conduit}" \ |
|
"$ATTIC_TOKEN" |
|
|
|
readarray -t derivations < <(nix path-info "$@" --derivation) |
|
for derivation in "${derivations[@]}"; do |
|
cache+=( |
|
"$(nix-store --query --requisites --include-outputs "$derivation")" |
|
) |
|
done |
|
|
|
# Upload them to Attic |
|
# |
|
# Use `xargs` and a here-string because something would probably explode if |
|
# several thousand arguments got passed to a command at once. Hopefully no |
|
# store paths include a newline in them. |
|
( |
|
IFS=$'\n' |
|
nix shell --inputs-from . attic -c xargs \ |
|
attic push conduit <<< "${cache[*]}" |
|
) |
|
|
|
else |
|
echo "\$ATTIC_TOKEN is unset, skipping uploading to the binary cache" |
|
fi
|
|
|