33 lines
955 B
Bash
Executable File
33 lines
955 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# shellcheck source=candidates.sh
|
|
source "$SCRIPT_DIR/candidates.sh"
|
|
candidate_config "${1:-}"
|
|
|
|
target_dir="$MODEL_ROOT/$CANDIDATE_ID"
|
|
target="$target_dir/$MODEL_FILE"
|
|
partial="$target.part"
|
|
|
|
install -d -m 0755 "$target_dir"
|
|
|
|
if [[ -s $target ]]; then
|
|
printf '%s %s\n' "$MODEL_SHA256" "$target" | sha256sum -c -
|
|
echo "Already prepared: $target"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Downloading pinned $CANDIDATE_ID artifact ($MODEL_SIZE bytes)"
|
|
curl --fail --location --retry 8 --retry-delay 5 --continue-at - \
|
|
--output "$partial" "$MODEL_URL"
|
|
|
|
actual_size=$(stat -c %s "$partial")
|
|
if [[ $actual_size != "$MODEL_SIZE" ]]; then
|
|
echo "Size mismatch: expected $MODEL_SIZE, got $actual_size; keeping $partial for inspection" >&2
|
|
exit 1
|
|
fi
|
|
printf '%s %s\n' "$MODEL_SHA256" "$partial" | sha256sum -c -
|
|
mv -f "$partial" "$target"
|
|
echo "Prepared and verified: $target"
|