set -euo pipefail
cache=$1
api=${RPM_API:-https://forge.in.quineglobal.com/api/packages/quine-global-labs/rpm}
netrc=$(mktemp)
trap 'rm -f "$netrc"' EXIT
chmod 600 "$netrc"
printf 'machine %s login %s password %s\n' \
"$(sed -E 's|^https?://([^/]+).*|\1|' <<<"$api")" "$REGISTRY_USER" "$REGISTRY_TOKEN" >"$netrc"
upload() {
local code
code=$(curl -sS -o /dev/null -w '%{http_code}' --retry 3 --netrc-file "$netrc" \
--upload-file "$2" "$api/$1/upload") || code=000
case $code in
201) echo "new $1 ${2##*/}" ;;
409) echo "had $1 ${2##*/}" ;;
*) echo "::warning::$code uploading ${2##*/} to $1" ;;
esac
}
export -f upload
export api netrc
for dir in "$cache"/*/; do
id=$(basename "$dir")
id=${id%-*}
[[ $id == @* ]] && continue
group=$(sed -E 's/^copr:[^:]+:/copr-/; s/:/-/g' <<<"$id")
find "$dir" -name '*.rpm' -printf "$group\0%p\0"
done | xargs -0 -n 2 -P 4 bash -c 'upload "$@"' _ |
tee /dev/stderr | awk '{n[$1]++} END {for (k in n) printf "%s: %d\n", k, n[k]}'