#!/bin/bash # variables DBNAME="arcanisrepo" PREPAREDIR="${HOME}/arch/prepare" REPODIR="${HOME}/arch/repo" ROOTDIR="${HOME}/arch/root" STAGINGDIR="${HOME}/arch/staging/" # functions func_remove() { DBPATH="$1" PKGNAME="$2" /usr/bin/repo-remove ${DBNAME}.db.tar.gz ${PKGNAME} /usr/bin/repo-remove ${DBNAME}.files.tar.gz ${PKGNAME} /usr/bin/rm -f ${PKGNAME}* } export -f func_remove func_build() { PREPARE="$1" ROOT="$2" if grep "arch=('any')" PKGBUILD -q; then /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" else /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" /usr/bin/sudo /usr/bin/staging-x86_64-build -r "${ROOT}" fi /usr/bin/cp *.pkg.tar.xz "${PREPARE}" } export -f func_build # error checking if [ ! -d "${PREPAREDIR}" ]; then echo "Prepare directory does not exist" exit 1 fi if [ ! -d "${REPODIR}" ] || [ ! -d "${REPODIR}/i686" ] || [ ! -d "${REPODIR}/x86_64" ]; then echo "Repository directory does not exist" exit 1 fi if [ ! -d "${STAGINGDIR}" ]; then echo "Staging directory does not exist" exit 1 fi # building cd "${STAGINGDIR}" /usr/bin/find -name 'PKGBUILD' -type f -execdir /usr/bin/bash -c "func_build "${PREPAREDIR}" "${ROOTDIR}"" \; # signing cd "${PREPAREDIR}" for PACKAGE in $(/usr/bin/ls *.pkg.tar.xz); do /usr/bin/gpg -b ${PACKAGE} done # creating packages list i686_PACKAGES=$(/usr/bin/ls *.pkg.tar.xz | /usr/bin/grep "i686\|any") x86_64_PACKAGES=$(/usr/bin/ls *.pkg.tar.xz | /usr/bin/grep "x86_64\|any") echo "i686 packages: ${i686_PACKAGES}" echo "x86_64 packages: ${x86_64_PACKAGES}" # updating i686 repo cd "${REPODIR}/i686" for PACKAGE in ${i686_PACKAGES}; do PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//') /usr/bin/find -name '${PKGNAME}*' -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \; /usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} . done /usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz /usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz # updating x86_64 repo cd "${REPODIR}/x86_64" for PACKAGE in ${x86_64_PACKAGES}; do PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//') /usr/bin/find -name '${PKGNAME}*' -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \; /usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} . done /usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz /usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz # clear cd "${PREPAREDIR}" /usr/bin/rm -rf * cd "${STAGINGDIR}" /usr/bin/rm -rf *