#!/bin/bash # Librerelease # Uploads packages into [staging] # Copyright 2010 Nicolás Reynolds # ---------- GNU General Public License 3 ---------- # This file is part of Parabola. # Parabola is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # Parabola is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with Parabola. If not, see . source /etc/libretools.conf custom_config=$XDG_CONFIG_HOME/libretools/libretools.conf function usage { echo "$(gettext "Usage: $0")" echo echo "$(gettext "This script uploads packages on $WORKDIR/stagging")" echo "$(gettext "to parabola server.")" echo echo "$(gettext "OPTIONS:")" echo "$(gettext " -h this message.")" echo "$(gettext " -l only list packages but not upload them.")" echo "$(gettext " -c clean packages on $WORKDIR/staging.")" } function list_packages { repos=($(find "$WORKDIR/staging/" -mindepth 1 -type d \! -empty -printf '%f ' 2>/dev/null)) for _repo in ${repos[@]}; do msg2 "$_repo" find ${WORKDIR}/staging/${_repo} -type f -printf "%f\n" done unset repos } # Remove everything that's not a package or a signature function clean_non_packages { find $WORKDIR/staging/ -type f \ \! -iname "*.pkg.tar.?z" -a \! -iname "*.pkg.tar.?z.sig" \ -delete } # Clean everything function clean { find ${WORKDIR}/staging/ -type f -delete } while getopts 'hlc' arg; do case $arg in h) usage; exit 0 ;; l) list_packages; exit 0 ;; c) clean_packages; exit $? ;; esac done [[ -e $custom_config ]] && source $custom_config [[ ! -z ${HOOKPRERELEASE} ]] && bash -c "${HOOKPRERELEASE}" clean_non_packages msg "Uploading packages..." rsync --recursive \ --copy-links \ --hard-links \ --partial \ --prune-empty-dirs \ --human-readable \ --progress \ -e "ssh " \ ${WORKDIR}/staging \ ${PARABOLAHOST}:${LIBREDESTDIR}/ || { error "Sync failed, try again" exit 1 } msg "Removing packages from local [staging]" clean exit 0