diff --git a/db-move b/db-move index 65c99786b5638d5e28ccb112dd4ebda2e685713e..f0e001322329a5c9db72ba4943bfc2999319c224 100755 --- a/db-move +++ b/db-move @@ -3,6 +3,9 @@ . "$(dirname "$(readlink -e "$0")")/config" . "$(dirname "$(readlink -e "$0")")/db-functions" +set -eo pipefail +shopt -s nullglob + if (( $# < 3 )); then msg "usage: %s <repo-from> <repo-to> <pkgname|pkgbase> ..." "${0##*/}" exit 1 @@ -57,9 +60,10 @@ for pkgbase in "${pkgbases[@]}"; do if ! git_tag_exists "${pkgbase}" "${_pkgver}" && ! fetch_pkgbuild "${pkgbase}"; then die "Couldn't find package %s in git!" "${pkgbase}" fi - read -rd'\n' pkgver pkgnames < <(source_pkgbuild "${pkgbase}" "${_pkgver}"; \ + mapfile -t result < <(source_pkgbuild "${pkgbase}" "${_pkgver}"; \ get_full_version; echo "${pkgname[@]}") - read -ra pkgnames <<<"$pkgnames" + pkgver="${result[0]}" + read -ra pkgnames <<<"${result[1]}" if (( ${#pkgnames[@]} < 1 )); then die "Could not read pkgname" fi @@ -94,7 +98,9 @@ done for pkgbase in "${pkgbases[@]}"; do tag_list="" for pkgarch in "${ARCHES[@]}" 'any'; do - vcsrepo_from=$(find_repo_for_package "${pkgbase}" "${pkgarch}" "${repo_from}") + if ! vcsrepo_from=$(find_repo_for_package "${pkgbase}" "${pkgarch}" "${repo_from}"); then + continue + fi if [[ ${vcsrepo_from} = ${repo_from}-${pkgarch} ]]; then if [[ ${pkgarch} = any ]]; then @@ -106,9 +112,10 @@ for pkgbase in "${pkgbases[@]}"; do if ! _pkgver=$(pkgver_from_state_repo "${pkgbase}" "${vcsrepo_from}"); then die "%s has no entry in %s" "${pkgbase}" "${vcsrepo_from}" fi - read -rd'\n' pkgver pkgnames < <(source_pkgbuild "${pkgbase}" "${_pkgver}"; \ + mapfile -t result < <(source_pkgbuild "${pkgbase}" "${_pkgver}"; \ get_full_version; echo "${pkgname[@]}") - read -ra pkgnames <<<"$pkgnames" + pkgver="${result[0]}" + read -ra pkgnames <<<"${result[1]}" tag_list+=", $pkgarch" pkgbase_arches[$pkgbase]+="$pkgarch "