diff --git a/repo-check b/repo-check new file mode 100755 index 0000000..c8e59bd --- /dev/null +++ b/repo-check @@ -0,0 +1,48 @@ +#!/bin/bash + +# variables +REPODIR="${HOME}/arch/repo" +STAGINGDIR="${HOME}/arch/staging/" + +# functions +func_update() { + PKGNAME="$1" + REPODIR="$2" + + echo "=> Checking ${PKGNAME}" + echo ${PKGNAME} | /usr/bin/grep -q "\-svn\|\-git\|\-bzr" && return 1; + /usr/bin/yaourt -G aur/${PKGNAME} + [ -d ${PKGNAME} ] || return 1; + + cd ${PKGNAME} + PKGVER=$(/usr/bin/basename $(/usr/bin/find ${REPODIR} -name "${PKGNAME}*.pkg.tar.xz") | /usr/bin/awk -F '-' '{printf("%s-%s", $(NF-2), $(NF-1));}') + _NEWVER=$(/usr/bin/grep ^pkgver= PKGBUILD | /usr/bin/sed 's/^pkgver=//' | /usr/bin/tr -d \"\|\') + _NEWREL=$(/usr/bin/grep ^pkgrel= PKGBUILD | /usr/bin/sed 's/^pkgrel=//' | /usr/bin/tr -d \"\|\') + NEWVER="${_NEWVER}-${_NEWREL}" + cd ../ + if [ "${PKGVER}" = "${NEWVER}" ]; then + /usr/bin/rm -rf ${PKGNAME} + echo "${PKGNAME} is up-to-date" + else + echo "${PKGNAME} is out-of-date" + fi +} + +# get list +/usr/bin/rm -f "${STAGINGDIR}/pkglist" +cd "${REPODIR}/i686" +/usr/bin/find * -name "*.pkg.tar.xz" >> ${STAGINGDIR}/pkglist + +# work block +cd "${STAGINGDIR}" +for PACKAGE in $(cat pkglist); do + PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//') + func_update ${PKGNAME} ${REPODIR} +done +/usr/bin/rm -f "${STAGINGDIR}/pkglist" + +# check for updates +cd "${STAGINGDIR}" +if [[ $(find * -type d | wc -l) > 0 ]]; then + repo-update +fi