canvas-lms/script/install_hooks

41 lines
956 B
Bash
Executable File

#!/bin/sh
set -e
if [ -n "$1" ]; then
CANVAS_ROOT=$1
fi
if [ -z "$2" ]; then
$0 "$CANVAS_ROOT" $CANVAS_ROOT".git" "."
for plugin in $(find $CANVAS_ROOT"gems/plugins" -name .git | sort); do
$0 "$CANVAS_ROOT" $plugin "../../.."
done
exit 0
fi
GIT_DIR=$2
HOOKS_PREFIX=$3
if [ ! -d "$GIT_DIR" ]; then
exit 0
fi
echo running for git dir $GIT_DIR
GLOB_PATTERN=$CANVAS_ROOT"hooks/*"
for hook in $GLOB_PATTERN; do
hook_name=${hook##*/}
git_path="$GIT_DIR/hooks/$hook_name"
# make sure file exists
touch "$git_path"
# make sure it has a shebang prepending if necessary
grep -qF -- "#!" "$git_path" || (echo "#!/bin/sh" | cat - $git_path > "$git_path-temp" && mv "$git_path-temp" $git_path)
# make sure it is executable
[ -x "$git_path" ] || chmod +x "$git_path"
# # put in line to call this hook
grep -qF -- "$HOOKS_PREFIX/hooks/$hook_name" "$git_path" || echo "$HOOKS_PREFIX/hooks/$hook_name" >> "$git_path"
done
exit 0