#!/bin/bash #!/bin/bash source /etc/abs.conf source /etc/libretools.conf if [ ! -w "$TORUPATH" ]; then error "Toru's path isn't writable. Please check $TORUPATH" exit 1 fi LASTSYNCFILE=${TORUPATH}/lastsync FORCE=false QUIET=false DEBUG=false # usage : in_array( $needle, $haystack ) function in_array { [[ $2 ]] || return 1 # Not found local needle=$1; shift local item for item in "$@"; do [[ ${item#@} = $needle ]] && return 0 # Found done return 1 # Not Found } # Stores the lastsync date lastsync() { local lastsyncfile lastsyncfile=$1 [ -e ${lastsyncfile} -a ! -w ${lastsyncfile} ] && { error "The sync date can't be saved. ${lastsyncfile} isn't writable." return 1 } date +%s > ${lastsyncfile} touch ${lastsyncfile} } get_dbs() { local _db for _db in /var/lib/pacman/sync/*.db; do bsdtar tf ${_db} | cut -d'/' -f1 | sort -u done } # repo paths get_pkgbuilds() { pkgbuilds=() if [[ $FORCE = true || ! -e ${LASTSYNCFILE} ]]; then $QUIET || warning "Forcing upgrade" # Get all PKGBUILDs pkgbuilds=($(find $@ -mindepth 2 -maxdepth 3 -type f -name 'PKGBUILD')) else # Only find newer than lastsyncfile and read everything else from cache pkgbuilds=($(find $@ -mindepth 2 -maxdepth 3 -type f -name 'PKGBUILD' -newer ${LASTSYNCFILE})) fi # Return all PKGBUILDs found echo ${pkgbuilds[@]} } # End inmediately but print a useful message trap_exit() { error "$@" exit 1 } # Trap signals from makepkg set -E trap 'trap_exit "(prfullpkg:${level}) TERM signal caught. Exiting..."' TERM HUP QUIT trap 'trap_exit "(prfullpkg:${level}) Aborted by user! Exiting..."' INT trap 'trap_exit "(prfullpkg:${level}) An unknown error has occurred. Exiting..."' ERR