diff --git a/pkg/de-p1st-repo/arch-repo-push-new.sh b/pkg/de-p1st-repo/arch-repo-push-new.sh index ea88e6d..66c63c8 100644 --- a/pkg/de-p1st-repo/arch-repo-push-new.sh +++ b/pkg/de-p1st-repo/arch-repo-push-new.sh @@ -2,47 +2,52 @@ source /etc/de-p1st-repo/arch-repo.cfg || exit +function main() { + cd "${LOCAL_PKG_DIR}" || exit + + # check if at least one matching file exists + match="0" + for PKG in ./*.pkg.tar.{xz,zst}; do + [ -f "$PKG" ] || { echo "There are no local packages for the pattern $PKG"; continue; } + + # if we are here, then there is at least one match! + match="1" + break + done + + if [ "$match" = "0" ]; then + echo "There are no local packages" + exit 0 + fi -cd "${LOCAL_PKG_DIR}" || exit + # Get list of new packages, one package per line. + # Enable nullglob for the case that e.g. just *.zst but not *.xz packages exist. + shopt -s nullglob + rsync --ignore-existing --out-format="%n" --dry-run \ + ./*.pkg.tar.{xz,zst} "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" > new-pkg.txt || exit -# check if at least one matching file exists -match="0" -for PKG in ./*.pkg.tar.{xz,zst}; do - [ -f "$PKG" ] || { echo "There are no local packages for the pattern $PKG"; continue; } + # if there are no new packages to push/synchronize, then exit + if [ ! -s new-pkg.txt ]; then + echo "No new packages."; + exit 0; + fi - # if we are here, then there is at least one match! - match="1" - break + + # transfer new packages using rsync + rsync --ignore-existing --progress --human-readable \ + ./*.pkg.tar.{xz,zst} "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" || exit + + # transfer new-pkg.txt + rsync --ignore-times --checksum --progress --human-readable \ + new-pkg.txt "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" || exit + + + # add each new package to database + ssh "${REMOTE_SSH_HOST}" "/usr/bin/arch-repo-receive-new" || exit +} + + +for LOCAL_PKG_DIR in "${LOCAL_PKG_DIRS[@]}"; do + main done - -if [ "$match" = "0" ]; then - echo "There are no local packages" - exit 0 -fi - - -# Get list of new packages, one package per line. -# Enable nullglob for the case that e.g. just *.zst but not *.xz packages exist. -shopt -s nullglob -rsync --ignore-existing --out-format="%n" --dry-run \ - ./*.pkg.tar.{xz,zst} "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" > new-pkg.txt || exit - -# if there are no new packages to push/synchronize, then exit -if [ ! -s new-pkg.txt ]; then - echo "No new packages."; - exit 0; -fi - - -# transfer new packages using rsync -rsync --ignore-existing --progress --human-readable \ - ./*.pkg.tar.{xz,zst} "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" || exit - -# transfer new-pkg.txt -rsync --ignore-times --checksum --progress --human-readable \ - new-pkg.txt "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" || exit - - -# add each new package to database -ssh "${REMOTE_SSH_HOST}" "/usr/bin/arch-repo-receive-new" || exit diff --git a/pkg/de-p1st-repo/arch-repo.cfg b/pkg/de-p1st-repo/arch-repo.cfg index 1c1a610..fffa1da 100644 --- a/pkg/de-p1st-repo/arch-repo.cfg +++ b/pkg/de-p1st-repo/arch-repo.cfg @@ -3,7 +3,7 @@ # REMOTE_PKG_DIR REMOTE_SSH_HOST=rootnas -LOCAL_PKG_DIR=/home/custompkgs +LOCAL_PKG_DIRS=('/home/custompkgs' '/home/yoda/Downloads/git/arch/out') REMOTE_PKG_DIR=/mnt/data/live/arch-repo REMOTE_DB_NAME=de-p1st