#!/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