#!/bin/sh ## You can set these variables here or in your enviroment #SRC_PATH='/path/to/packages/sources' #REPO_PATH='/path/to/archlinux/repo' #REPO_NAME='repo_name' add_package() { if [ ! -d "${SRC_PATH}/$(echo $1 | cut -d '/' -f 4 | cut -d '.' -f 1)" ]; then cd ${SRC_PATH} git clone $1 else echo 'Package already present.' fi } rm_package() { if [ -d "${SRC_PATH}/$1" ]; then rm -rf ${SRC_PATH}/$1 else echo 'Package not present.' fi } check_package() { if [ -d "${SRC_PATH}/$1" ]; then vim ${SRC_PATH}/$1/PKGBUILD else echo 'Package not found.' fi } list_packages() { find ${SRC_PATH}/* -type d -prune | cut -d '/' -f5 } clean_packages() { if [ "$1" != '' ]; then find ${SRC_PATH} -type f -iname "*$1*.pkg.tar.xz" -exec rm {} \; else find ${SRC_PATH} -type f -iname "*.pkg.tar.xz" -exec rm {} \; fi } build_packages() { if [ "$1" != '' ]; then cd $(find ${SRC_PATH}/* -type d -prune -iname "*$1") makepkg -Cs else for i in $(find ${SRC_PATH}/* -type d -prune) do cd $i makepkg -Cs done fi } upgrade_packages() { if [ "$1" != '' ]; then cd $(find ${SRC_PATH}/* -type d -prune -iname "*$1") git pull makepkg -Cs else for i in $(find ${SRC_PATH}/* -type d -prune) do cd $i git pull makepkg -Cs done fi } install_package() { if [ -d "${SRC_PATH}/$1" ]; then cd $(find ${SRC_PATH}/* -type d -prune -iname "*$1") git pull makepkg -Csi else echo 'Package not found.' fi } update_repo() { if [ "$1" != '' ]; then find ${SRC_PATH} -type f -iname "*$1*pkg.tar.xz" -exec cp {} ${REPO_PATH}/x86_64/ \; repo-add ${REPO_PATH}/x86_64/${REPO_NAME}.db.tar.gz ${REPO_PATH}/x86_64/*$1*.pkg.tar.xz else find ${SRC_PATH} -type f -iname "*pkg.tar.xz" -exec cp {} ${REPO_PATH}/x86_64/ \; repo-add ${REPO_PATH}/x86_64/${REPO_NAME}.db.tar.gz ${REPO_PATH}/x86_64/*.pkg.tar.xz fi } print_help() { echo 'repo.sh SEPPIOFISH repo tool' echo echo ' USAGE: repo.sh COMMAND PKGNAME (default ALL)' echo echo ' add (url) adds git package repository from aur' echo ' rm remove package' echo ' check check PKGBUILD' echo ' list lists availables packages' echo ' update updates the packages in the repo' echo ' build builds the packages' echo ' upgrade upgrades the packages' echo ' install builds and installs the package' echo ' clean cleans the packages' echo ' help prints this help' echo } if [ "$1" == '' ]; then echo 'warning: no command called.' elif [ "$1" == 'add' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" == '' ]; then echo 'error: missing argument.' else add_package $2 fi elif [ "$1" == 'rm' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" == '' ]; then echo 'error: missing argument.' else rm_package $2 fi elif [ "$1" == 'check' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" == '' ]; then echo 'error: missing argument.' else check_package $2 fi elif [ "$1" == 'list' ]; then if [ "$2" != '' ]; then echo 'error: too many arguments.' else list_packages fi elif [ "$1" == 'update' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" != '' ]; then update_repo $2 else update_repo fi elif [ "$1" == 'build' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" != '' ]; then build_packages $2 else build_packages fi elif [ "$1" == 'upgrade' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" != '' ]; then upgrade_packages $2 else upgrade_packages fi elif [ "$1" == 'install' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" == '' ]; then echo 'error: missing argument.' else install_package $2 fi elif [ "$1" == 'clean' ]; then if [ "$3" != '' ]; then echo 'error: too many arguments.' elif [ "$2" != '' ]; then clean_packages $2 else clean_packages fi elif [ "$1" == 'help' ]; then if [ "$2" != '' ]; then echo 'error: too many arguments.' else print_help fi else echo 'error: unrecocnized command.' fi