pantry/projects/git-scm.org/git-shim

41 lines
814 B
Plaintext
Raw Normal View History

#!/bin/sh
set -e
find_git_command() {
for arg in "$@"; do
case $arg in
-*);;
*)
echo "$arg"
return # found the command!
esac
done
}
libexec="$(cd "$(dirname "$0")/.." && pwd)"/libexec
# extract the git subcommand
cmd=$(find_git_command "$@")
2023-10-31 17:41:13 +03:00
_provides() {
if foo="$(pkgx --provider git-"$cmd")"; then
echo "$foo"
else
# syncing is slow but lets be sure about it
pkgx --sync --provider git-"$cmd"
fi
}
if [ -z "$cmd" ]; then
exec "$libexec/git" "$@"
elif [ -x "$libexec/git-$cmd" ] && [ -f "$libexec/git-$cmd" ]; then
exec "$libexec/git" "$@"
elif type "git-$cmd" >/dev/null 2>&1; then
exec "$libexec/git" "$@"
2023-10-31 17:41:13 +03:00
elif command -v pkgx >/dev/null 2>&1 && pkg=$(_provides); then
exec pkgx +"$pkg" "$libexec/git" "$@"
else
exec "$libexec/git" "$@"
fi