git push origin masterMerge branch 'williamboman-patch-1'

This commit is contained in:
Ionică Bizău 2015-02-20 15:11:17 +02:00
commit ce2f5c9259
2 changed files with 46 additions and 13 deletions

View File

@ -11,7 +11,8 @@
},
"author": "Ionică Bizău <bizauionica@gmail.com>",
"contributors": [
"Gnab <as0n@gnab.fr>"
"Gnab <as0n@gnab.fr>",
"William Boman <william@redwill.se>"
],
"license": "MIT",
"devDependencies": {},

View File

@ -1,21 +1,53 @@
#!/bin/sh
git_templates_dir="$HOME/.git-templates"
git_hooks_dir="$git_templates_dir/hooks"
post_commit_path="$git_hooks_dir/post-commit"
# Check dependencies
check_command() {
command -v "$1" > /dev/null 2>&1 || { echo "git-stats hook script requires the \`${1}\` binary in order to run." >&2; exit 1; }
}
git config --global init.templatedir $git_templates_dir
mkdir -p $git_hooks_dir
check_command "perl"
check_command "printf"
check_command "git"
cat << EOF > $post_commit_path
#!/bin/sh
echo "Setting up git-stats hooks.";
# Create a new global templatedir if there are none
git_templates_dir=$(git config --global --get init.templatedir);
if [ $? -ne 0 ]; then
# Create a new global templatedir if there are none
git_templates_dir="${HOME}/.git-templates"
git config --global init.templatedir "$git_templates_dir" && echo "Set new global git template dir at ${git_templates_dir}"
fi
git_hooks_dir="${git_templates_dir}/hooks"
post_commit_path="${git_hooks_dir}/post-commit"
mkdir -p "$git_hooks_dir"
# Create the post-commit file content
hook=$(cat <<EOF
### git-stats hook (begin) ###
# Copy last commit hash to clipboard on commit
commit_hash=\`git rev-parse HEAD\`
repo_url=\`git config --get remote.origin.url\`
commit_date=\`git log -1 --format=%cd\`
commit_hash=\$(git rev-parse HEAD)
repo_url=\$(git config --get remote.origin.url)
commit_date=\$(git log -1 --format=%cd)
commit_data="\"{ \"date\": \"\$commit_date\", \"url\": \"\$repo_url\", \"hash\": \"\$commit_hash\" }\""
git-stats --record "\$commit_data"
git-stats --record "\${commit_data}"
### git-stats hook (end) ###
EOF
);
chmod +x $post_commit_path
if [ ! -f "$post_commit_path" ]; then
printf "#!/bin/sh\n%s" "$hook" > "$post_commit_path" \
&& chmod +x "$post_commit_path" \
&& echo "Successfully set up git-stats hook at ${post_commit_path}." \
&& exit 0
else
# Remove any previous git-stats hook code blocks
perl -i -0pe 's/(([ \t]*# Copy last commit hash to clipboard on commit\s*(\n.*){5}\s*git-stats --record "\$commit_data"\s*)|([ \t]*### git-stats hook \(begin\) ###\s*(\n.*){7}\s*### git-stats hook \(end\) ###\s*))//g' "$post_commit_path"
printf "%s\n" "$hook" >> "$post_commit_path" \
&& echo "Successfully set up git-stats hook at ${post_commit_path}." \
&& exit 0
fi
echo "Couldn't set up git-stats hook."
exit 1