dotfiles/repo-check
2014-03-26 03:29:36 +04:00

49 lines
1.4 KiB
Bash
Executable File

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