diff options
Diffstat (limited to 'src/bin/db-pkg-rm')
-rwxr-xr-x | src/bin/db-pkg-rm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/bin/db-pkg-rm b/src/bin/db-pkg-rm new file mode 100755 index 0000000..a2d5de1 --- /dev/null +++ b/src/bin/db-pkg-rm @@ -0,0 +1,57 @@ +#!/bin/bash + +CONFIG_DIR="$(dirname "$(readlink -e "${0}")")/etc" + +source "${CONFIG_DIR}/xbs.cfg" +source "${SHARE_DIR}/db-functions" + +if [ "${#}" -lt '4' ]; then + msg "usage: %s <platform> <repo> <arch> <pkg_name> ..." "${0##*/}" + exit 1 +fi + +plataform="${1}" +repo="${2}" +arch="${3}" +pkg_names=("${@:4}") + +for '_platform' in "${PLATFORMS[@]}"; do + # Rename ("${plataform}") to easily script usage + _platform_name="${plataform/\//+}" _platform_name="${_platform_name,,}" + + if [ "${_platform_name}" == "${_platform}" ]; then + source "${CONFIG_DIR}/xbs.d/${_platform}.cfg" + + repo_path="${REPO_DIR}/${_platform}/${repo}/os" + + if ! check_repo_permission "${repo}"; then + die "You don't have permission to remove packages to %s" "${repo}" + fi + + if [ "${arch}" == "{any}" ]; then + tarches=("${ARCHES[@]}") + else + tarches=("${arch}") + fi + + for 'tarch' in "${tarches[@]}"; do + if [[ ! -d "${repo_path} ]]; then + die "This [%s] doesn't exist" "${repo}" + elif [[ ! -d "${repo_path}/${tarch}" ]]; then + die "This [%s] doesn't support %s archictecture" "${repo}" "${arch}" + else + repo_lock "${repo}" "${tarch}" || exit 1 + fi + done + + for 'tarch' in "${tarches[@]}"; do + for 'pkg_name' in "${pkg_names[@]}"; do + msg "Removing %s from [%s]..." "${pkg_name}" "${repo}" + done + arch_repo_remove "${repo}" "${tarch}" "${pkgnames[@]}" + repo_unlock "${repo}" "${tarch}" + done + else + die "This %s plataform doesn't exist" "${plataform}" + fi +done |