#!/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}* } 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}" } # 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 /usr/bin/cd "${STAGINGDIR}" /usr/bin/find -name PKGBUILD -type f -execdir func_build "${PREPAREDIR}" "${ROOTDIR}" \; # signing /usr/bin/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 /usr/bin/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 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 /usr/bin/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 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 /usr/bin/cd "${PREPAREDIR}" /usr/bin/rm -rf * /usr/bin/cd "${STAGINGDIR}" /usr/bin/rm -rf *