diff options
Diffstat (limited to 'get-repos')
-rwxr-xr-x | get-repos | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/get-repos b/get-repos new file mode 100755 index 0000000..b8d2ccb --- /dev/null +++ b/get-repos @@ -0,0 +1,56 @@ +#!/bin/bash +# Gets repo databases and updates parabolaweb +# Note: It works remotely because our parabolaweb server and repo server are +# two different hosts + +trap_exit() { + echo + error "$@" + exit 1 +} + +source "$(dirname "$(readlink -e "$0")")/config" +source "$(dirname "$(readlink -e "$0")")/libremessages" + +# From makepkg +set -E + +trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP QUIT +trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT +trap 'trap_exit "$(gettext "An unknown error has occurred. Exiting...")"' ERR + +WORKDIR=$(mktemp -dt "${0##*/}.XXXXXXXXXX") +trap "rm -rf -- $(printf '%q' "${WORKDIR}")" EXIT + +DBLIST=() + +# Repos +for _repo in "${PKGREPOS[@]}"; do + for _arch in "${ARCHES[@]}"; do + DBLIST+=("http://repo.parabolagnulinux.org/${_repo}/os/${_arch}/${_repo}${FILESEXT}") + done +done + +# Get them all +msg "Retrieving ${#DBLIST[@]} databases" +wget --directory-prefix=${WORKDIR} \ + --no-verbose \ + --force-directories \ + --no-host-directories \ + "${DBLIST[@]}" || true +# Always return true, some databases are expect to be missing + +# Create the arches regexp arch1|arch2 +arch_re="$(echo "(${ARCHES[@]} i586)" | tr ' ' '|')" + +msg "Adding to parabolaweb" +find "${WORKDIR}" -iname "*${FILESEXT}" | while read _db; do + _arch=$(echo "${_db}" | egrep -o "${arch_re}") + + if [ -z "${_arch}" ]; then + error "Can't find database architecture: ${_db}" + continue + fi + + "${WEB_DIR}"/manage.py reporead "${_arch}" "${_db}" || true +done |