#/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.com
#
# Updates by Ben Zörb:
# - Works in any project directory
# - Include composer
# - Run jspm install if applicable
#
# git hook to run a command after `git pull` if a specified file was changed
# Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.

changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"

check_run() {
	echo "$changed_files" | grep --quiet "$1" && cd $(get_dir "$1") && eval "$2"
}

get_dir() {
	base=$(git rev-parse --show-cdup)
	file=$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD | grep "$1")
	dirname "./$base$file"
}

# Example usage
# In this example it's used to run `npm install` if package.json changed and `bower install` if `bower.json` changed.
check_run package.json "( [ -f "$(which yarn)" ] && yarn || npm install ) && [ -f ./node_modules/.bin/jspm ] && ./node_modules/.bin/jspm install"
check_run bower.json "bower install"
check_run composer.lock "[ -f ./composer.phar ] && php composer.phar install || composer install"
