summaryrefslogtreecommitdiff
path: root/src/toru/toru-utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/toru/toru-utils')
-rwxr-xr-xsrc/toru/toru-utils76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/toru/toru-utils b/src/toru/toru-utils
new file mode 100755
index 0000000..316e6b8
--- /dev/null
+++ b/src/toru/toru-utils
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+source /etc/abs.conf
+source /etc/libretools.conf
+
+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
+ extra=""
+ else
+# Only find newer than lastsyncfile and read everything else from cache
+ extra=" -newer ${LASTSYNCFILE}"
+ fi
+
+# Return all PKGBUILDs found
+ find $@ -mindepth 2 -maxdepth 3 -type f -name 'PKGBUILD' ${extra}
+}
+
+# End inmediately but print a useful message
+trap_exit() {
+ error "$@"
+
+ exit 1
+}
+
+# Trap signals from makepkg
+set -E
+trap 'trap_exit "TERM signal caught. Exiting..."' TERM HUP QUIT
+trap 'trap_exit "Aborted by user! Exiting..."' INT
+trap 'trap_exit "An unknown error has occurred. Exiting..."' ERR