From 569554d315e7e15e1cd051210aad983825455ffe Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 26 Jul 2021 07:59:32 +0300 Subject: [PATCH] kiss: Add update-resolve hook Hooks can now resolve paths if needed and tell the package manager about the result. ie, a hook performing git retrieval can tell the package manager the resolved path to the repository. The package manager will then filter duplicates /correctly/ and hooks can be sure they'll run once per *Git repository*. #!/bin/sh -e # # Generic Git repository updater. git remote >/dev/null 2>&1 || exit 0 case $1 in update-resolve) subm=$(git rev-parse --show-superproject-working-tree) git -C "${subm:-"$PWD"}" rev-parse --show-toplevel ;; pre-update) case $(git config --get merge.verifySignatures) in true) printf 'Signature verification enabled.\n' esac git pull git submodule update --remote --init -f ;; esac NOTE: This may be reverted. Just merging to allow users to play around with it. It's one possible solution to removing hook boilerplate for updates. --- kiss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kiss b/kiss index 0894447..6aee5c5 100755 --- a/kiss +++ b/kiss @@ -1562,6 +1562,13 @@ pkg_update() { pkg_update_repo() { cd "$repo" || die "Repository '$repo' inaccessible" + # Hook can tell the package manager to use a different path. + # arg1: update-resolve + # arg2: path to repository + _pwd_res=$(run_hook update-resolve "$repo") repo=${_pwd_res:-"$repo"} + + cd "$repo" || die "Repository '$repo' inaccessible" + contains "$repos" "$PWD" || { repos="$repos $PWD"