diff options
author | Nicolás Reynolds <apoyosis@correo.inta.gob.ar> | 2012-02-04 13:17:05 -0300 |
---|---|---|
committer | Nicolás Reynolds <apoyosis@correo.inta.gob.ar> | 2012-02-04 13:17:05 -0300 |
commit | 3fb8e62b798c0dffb201727439a6a0d90bc1b20f (patch) | |
tree | f69c1b6db4082e9188f22be8d3d3d5cc5212f34f /toru-utils | |
parent | 5ab36af3c7a505ff40bb8ca46ec387b94d85cbdf (diff) | |
parent | 9808018ca09050ade144d0dfc0b0b6edadefa368 (diff) |
Merge branch 'master' of ssh://gparabola/libretools
Conflicts:
libremakepkg
Diffstat (limited to 'toru-utils')
-rwxr-xr-x | toru-utils | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/toru-utils b/toru-utils new file mode 100755 index 0000000..bb0aef4 --- /dev/null +++ b/toru-utils @@ -0,0 +1,86 @@ +#!/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 |