xref: /aosp_15_r20/external/flashrom/util/git-hooks/install.sh (revision 0d6140be3aa665ecc836e8907834fcd3e3b018fc)
1*0d6140beSAndroid Build Coastguard Worker#!/bin/sh -e
2*0d6140beSAndroid Build Coastguard Worker
3*0d6140beSAndroid Build Coastguard Workerroot=$(git rev-parse --show-cdup 2>/dev/null) || \
4*0d6140beSAndroid Build Coastguard Worker     { echo "Not under git control. Cannot install git hooks." >&2 ; exit 0 ; }
5*0d6140beSAndroid Build Coastguard Worker
6*0d6140beSAndroid Build Coastguard Worker[ -z "${root}" ] || \
7*0d6140beSAndroid Build Coastguard Worker     { echo "Not in root directory. Can only run from git root." >&2 ; exit 1 ; }
8*0d6140beSAndroid Build Coastguard Worker
9*0d6140beSAndroid Build Coastguard Workersrc=util/git-hooks/ # relative to root
10*0d6140beSAndroid Build Coastguard Workerhooks=$(cd "${src}" && git ls-files -c | grep -Ev 'install.sh|wrapper.sh')
11*0d6140beSAndroid Build Coastguard Worker
12*0d6140beSAndroid Build Coastguard Workerif [ "$(git rev-parse --git-path 2>/dev/null)" = "--git-path" ]; then
13*0d6140beSAndroid Build Coastguard Worker	# very old git, we have to guess
14*0d6140beSAndroid Build Coastguard Worker	dst=".git/hooks/"
15*0d6140beSAndroid Build Coastguard Worker	rel="../../"
16*0d6140beSAndroid Build Coastguard Workerelse
17*0d6140beSAndroid Build Coastguard Worker	dst=$(git rev-parse --git-path hooks/)
18*0d6140beSAndroid Build Coastguard Worker	rel=$(git rev-parse --prefix "${dst}" --show-cdup)
19*0d6140beSAndroid Build Coastguard Workerfi
20*0d6140beSAndroid Build Coastguard Worker
21*0d6140beSAndroid Build Coastguard Workerfor h in $hooks; do
22*0d6140beSAndroid Build Coastguard Worker	# Test if hook is not already installed, i.e. doesn't point at the wrapper
23*0d6140beSAndroid Build Coastguard Worker	if [ ! "${dst}$h" -ef "${src}wrapper.sh" ]; then
24*0d6140beSAndroid Build Coastguard Worker		# preserve custom hooks if any
25*0d6140beSAndroid Build Coastguard Worker		if [ -e "${dst}$h" ]; then
26*0d6140beSAndroid Build Coastguard Worker			mv "${dst}$h" "${dst}$h.local"
27*0d6140beSAndroid Build Coastguard Worker		fi
28*0d6140beSAndroid Build Coastguard Worker		ln -s "${rel}${src}wrapper.sh" "${dst}$h"
29*0d6140beSAndroid Build Coastguard Worker	fi
30*0d6140beSAndroid Build Coastguard Workerdone
31