diff options
Diffstat (limited to 'sign-and-upload-all')
-rwxr-xr-x | sign-and-upload-all | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/sign-and-upload-all b/sign-and-upload-all new file mode 100755 index 000000000..255ce0620 --- /dev/null +++ b/sign-and-upload-all @@ -0,0 +1,110 @@ +#!/bin/bash + +cd "$(dirname "$(readlink -e "$0")")" + + +for distro in arch artix; do + upkgs=$( + ssh ${distro}linuxewe@eckner.net ' + bsdtar -Oxf os/'"$(pacman-conf Architecture)"'/'"${distro}"'linuxewe.db.tar.gz \ + | sed -n '"'"' + /^%FILENAME%$/ { + N + s/^.*\n// + p + } + '"'"' + ' + ) + unset archs + declare -A archs + for pkg in */${distro}/*.pkg.tar.zst; do + [ -f "${pkg}" ] \ + || continue + printf '%s\n' "${pkg##*/}" \ + | grep -qxF "${upkgs}" \ + && continue + [ -f "${pkg}.sig" ] \ + || gpg --detach-sign -u 5FDCA472AB93292BC678FD59255A76DB9A12601A "${pkg}" \ + || exit 1 + arch="${pkg##*-}" + arch="${arch%%.*}" + archs["${arch}"]=1 + done + + for arch in "${!archs[@]}"; do + rsync -av --progress --ignore-existing */${distro}/*-${arch}.pkg.tar.zst{,.sig} ${distro}linuxewe@eckner.net:os/${arch}/ + pkgs=$( + printf '%s\n' */${distro}/*-${arch}.pkg.tar.zst \ + | sed 's@^.*/@@' \ + | tr '\n' ' ' + ) + + if [ "${arch}" = 'any' ]; then + ssh ${distro}linuxewe@eckner.net ' + cd os + for arch in */; do + cd ${arch} + for pkg in '"${pkgs}"'; do + ln -s ../any/${pkg} + ln -s ../any/${pkg}.sig + done + repo-add -s -k 0x3CFB0AD8F60030F8 '"${distro}"'linuxewe.db.tar.gz '"${pkgs}"' + find -maxdepth 1 -mindepth 1 -not -type d -printf '"'"'%f\n'"'"' \ + | grep -vxFf <( + ls '"${distro}"'linuxewe.db* + bsdtar -Oxf '"${distro}"'linuxewe.db.tar.gz \ + | sed -n '"'"' + /^%FILENAME%$/ { + N + s/^.*\n// + p + s/$/.sig/ + p + } + '"'"' + ) \ + | xargs -r rm -f + cd .. + done + cd any + find -maxdepth 1 -mindepth 1 -not -type d -printf '"'"'%f\n'"'"' \ + | grep -vxFf <( + for db in ../*/'"${distro}"'linuxewe.db.tar.gz; do + bsdtar -Oxf "${db}" + done \ + | sed -n '"'"' + /^%FILENAME%$/ { + N + s/^.*\n// + p + s/$/.sig/ + p + } + '"'"' + ) \ + | xargs -r rm -f + ' + else + ssh ${distro}linuxewe@eckner.net ' + cd os/'"${arch}"' + repo-add -s -k 0x3CFB0AD8F60030F8 '"${distro}"'linuxewe.db.tar.gz '"${pkgs}"' + find -maxdepth 1 -mindepth 1 -not -type d -printf '"'"'%f\n'"'"' \ + | grep -vxFf <( + ls '"${distro}"'linuxewe.db* + bsdtar -Oxf '"${distro}"'linuxewe.db.tar.gz \ + | sed -n '"'"' + /^%FILENAME%$/ { + N + s/^.*\n// + p + s/$/.sig/ + p + } + '"'"' + ) \ + | xargs -r rm -f + ' + fi + done +done |