From patchwork Mon Feb 26 22:59:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Velikov via arch-projects X-Patchwork-Id: 442 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id B331622C7B3A for ; Mon, 26 Feb 2018 22:58:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIM_SIGNED=0.1, DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,RCVD_IN_DNSWL_MED=-2.3 autolearn=ham autolearn_force=no version=3.4.1 X-Spam-BL-Results: [127.0.9.2] [127.0.0.10] [127.0.0.10] Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Mon, 26 Feb 2018 22:58:52 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 975AE8F8EDBF3; Mon, 26 Feb 2018 22:58:43 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [IPv6:2a01:4f8:160:3033::2]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS; Mon, 26 Feb 2018 22:58:43 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 6BDD82DBA0; Mon, 26 Feb 2018 22:58:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1519685923; bh=3B9FmyTR5Gvx4CXwZN5Awlo08mXnvn2UMCu6yRUGBK4=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc; b=Y2TOoMNpdszJJWvHVBEvv2wOvJ/pUwxN+9WW9VYDwZg/dy2QSX6NRZOtz+H5v9ILh re4UNsAjYb8ONyPJWoZtFhjmA97Ao8JdIvZUJL0WsHdkNKd7uZbVKuK2bTiHGvIOtx P3z2yYAt1dgifQ2OdKmqFfIdv0XnuCqv8uUC7S+gv4qvxZAK9V/3GqEg8ECP1pHL5t t5jTsZV/iIUTRj638IsD96kme82D3A0yiTLaTmVjEUGmv+GvCN277RdCzyg0Fv9Elj h7Twly3dVkVDP6ao4rUOpPWA8iuHRw5lmxkX4huPwsaOnnVzjJ3DMTshi6pkilQPrC PnzeSCEFdT+atwnOW0lvfQCwthvuDmBRalUbAoJleP5n9sp7MbaKpOxCzQW902uooR O0Ml2wLH6pG3JonZUWb1maQvjv74+EiwiNLhhHX5NhWwrt7uwaZNzQdeByqm5yv6mJ fvgIiFrGIwXmfNVnVCpJRZBpc3rFPAFejzBZ1mpedKegeCSvd0ZiXgmRe4Y/rn/srw qmmjefc0A5CSf3iZi4/hTHJphhzD3LvOUcj/7JYf4c1BIMjzS6Dtkxc9srGeHXgncY /uzw7uRpE1xnN2xriV80QXNsq4sk1eQkXscI7ErppSx5gNHhbFYYZYEAehhvG6eYQ0 IrLZCHZNGVVNE4/gze0PoTTk= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 4D9DD2C5C9 for ; Mon, 26 Feb 2018 22:58:41 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by luna.archlinux.org (Postfix) with ESMTPS for ; Mon, 26 Feb 2018 22:58:41 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 4B7D68F8EDBEF; Mon, 26 Feb 2018 22:58:30 +0000 (UTC) Received: from localhost.localdomain (ool-18bdf232.dyn.optonline.net [24.189.242.50]) (using TLSv1.2 with cipher ECDHE-RSA-CHACHA20-POLY1305 (256/256 bits)) (No client certificate requested) (Authenticated sender: eschwartz) by orion.archlinux.org (Postfix) with ESMTPSA id 8FDB38F8EDBEE; Mon, 26 Feb 2018 22:58:29 +0000 (UTC) To: arch-projects@archlinux.org Date: Mon, 26 Feb 2018 17:59:09 -0500 Message-Id: <20180226225909.373-1-eschwartz@archlinux.org> X-Mailer: git-send-email 2.16.2 Subject: [arch-projects] [dbscripts] [PATCH] db-functions: unify the repo-add/repo-remove caller X-BeenThere: arch-projects@archlinux.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: Arch Linux projects development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Eli Schwartz via arch-projects Reply-To: Arch Linux projects development discussion Cc: Eli Schwartz Errors-To: arch-projects-bounces@archlinux.org Sender: "arch-projects" Use less duplicated logic, opening the way to more elegantly change the interface for the repo-add/repo-remove scripts which are themselves symlinked together and mostly have the same interface. Signed-off-by: Eli Schwartz --- db-functions | 34 ++++++++++++---------------------- db-move | 4 ++-- db-remove | 2 +- db-repo-add | 2 +- db-repo-remove | 2 +- db-update | 2 +- 6 files changed, 18 insertions(+), 28 deletions(-) diff --git a/db-functions b/db-functions index 8b71cae..653f130 100644 --- a/db-functions +++ b/db-functions @@ -442,34 +442,24 @@ set_repo_permission() { fi } -arch_repo_add() { - local repo=$1 - local arch=$2 - local pkgs=(${@:3}) - - # package files might be relative to repo dir - pushd "${FTP_BASE}/${repo}/os/${arch}" >/dev/null - /usr/bin/repo-add -q "${repo}${DBEXT}" ${pkgs[@]} \ - || error "repo-add ${repo}${DBEXT} ${pkgs[@]}" - popd >/dev/null - set_repo_permission "${repo}" "${arch}" - - REPO_MODIFIED=1 -} - -arch_repo_remove() { - local repo=$1 - local arch=$2 - local pkgs=(${@:3}) +arch_repo_modify() { + local action=$1 + local repo=$2 + local arch=$3 + local pkgs=("${@:4}") local dbfile="${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT}" - if [[ ! -f ${dbfile} ]]; then + if [[ ${action} = remove && ! -f ${dbfile} ]]; then error "No database found at '%s'" "$dbfile" return 1 fi - /usr/bin/repo-remove -q "${dbfile}" ${pkgs[@]} \ - || error "repo-remove ${dbfile} ${pkgs[@]}" + + # package files for repo-add might be relative to repo dir + pushd "${dbfile%/*}" >/dev/null + /usr/bin/repo-${action} -q "${dbfile}" ${pkgs[@]} \ + || error "repo-${action} ${dbfile} ${pkgs[@]}" set_repo_permission "${repo}" "${arch}" + popd >/dev/null REPO_MODIFIED=1 } diff --git a/db-move b/db-move index fb7ebac..e9c9fa7 100755 --- a/db-move +++ b/db-move @@ -114,8 +114,8 @@ done for tarch in ${ARCHES[@]}; do if [[ -n ${add_pkgs[${tarch}]} ]]; then - arch_repo_add "${repo_to}" "${tarch}" ${add_pkgs[${tarch}]} - arch_repo_remove "${repo_from}" "${tarch}" ${remove_pkgs[${tarch}]} + arch_repo_modify add "${repo_to}" "${tarch}" ${add_pkgs[${tarch}]} + arch_repo_modify remove "${repo_from}" "${tarch}" ${remove_pkgs[${tarch}]} fi done diff --git a/db-remove b/db-remove index 70502bc..08a95f9 100755 --- a/db-remove +++ b/db-remove @@ -47,6 +47,6 @@ for pkgbase in ${pkgbases[@]}; do done for tarch in ${tarches[@]}; do - arch_repo_remove "${repo}" "${tarch}" ${remove_pkgs[@]} + arch_repo_modify remove "${repo}" "${tarch}" ${remove_pkgs[@]} repo_unlock $repo $tarch done diff --git a/db-repo-add b/db-repo-add index d7be302..4b16f7e 100755 --- a/db-repo-add +++ b/db-repo-add @@ -36,6 +36,6 @@ for tarch in ${tarches[@]}; do msg "Adding %s to [%s]..." "$pkgfile" "$repo" fi done - arch_repo_add "${repo}" "${tarch}" ${pkgfiles[@]} + arch_repo_modify add "${repo}" "${tarch}" ${pkgfiles[@]} repo_unlock $repo $tarch done diff --git a/db-repo-remove b/db-repo-remove index 32d167e..3077786 100755 --- a/db-repo-remove +++ b/db-repo-remove @@ -32,6 +32,6 @@ for tarch in ${tarches[@]}; do for pkgname in ${pkgnames[@]}; do msg "Removing %s from [%s]..." "$pkgname" "$repo" done - arch_repo_remove "${repo}" "${tarch}" ${pkgnames[@]} + arch_repo_modify remove "${repo}" "${tarch}" ${pkgnames[@]} repo_unlock $repo $tarch done diff --git a/db-update b/db-update index 4e17184..e8ae08d 100755 --- a/db-update +++ b/db-update @@ -94,7 +94,7 @@ for repo in ${repos[@]}; do add_pkgs+=("${pkgfile}") done if (( ${#add_pkgs[@]} >= 1 )); then - arch_repo_add "${repo}" "${pkgarch}" ${add_pkgs[@]} + arch_repo_modify add "${repo}" "${pkgarch}" ${add_pkgs[@]} fi done done