Last active
July 23, 2019 23:54
-
-
Save thrgamon/76838290870145a33ded1ecffb432c59 to your computer and use it in GitHub Desktop.
A Gist for extracting the Clubhouse Ticket Number from their suggested branch names
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
### | |
## | |
# A git hook to extract the ticket numnber from the Clubhouse branch helpers and prepend it to commit messages for git. | |
# The format of the branch name format is tomgamon/ch4120/some-branch-name. | |
# This would result in a commit message starting with [ch4120]. | |
# If you want a quick way to set it up in a project, run this in the project root. | |
# curl -s https://gist.githubusercontent.com/thrgamon/76838290870145a33ded1ecffb432c59/raw > .git/hooks/prepare-commit-msg && chmod a+x .git/hooks/prepare-commit-msg | |
## | |
### | |
BRANCHES_TO_SKIP = ['master', 'develop'].freeze | |
# Matches 'ch' plus any number of digits that appear between two '/' | |
# For example it would match ch4120 in tomgamon/ch4120/option-values-strip-special-characters | |
PREFIX_REGEX = /(?<=\/)ch\d+?(?=\/)/.freeze | |
# Matches the format of a clubhouse branch which is some username, '/', | |
# 'ch' plus some digits, '/', some combination of words and hyphens. | |
CLUBHOUSE_BRANCH_REGEX = /\w+\/ch\d+\/[\w-]+/.freeze | |
message_file = ARGV[0] | |
branch_name = `git symbolic-ref --short HEAD`.strip | |
return if BRANCHES_TO_SKIP.include?(branch_name) | |
return unless branch_name =~ CLUBHOUSE_BRANCH_REGEX | |
return unless branch_name =~ PREFIX_REGEX | |
club_ticket_prefix = branch_name.scan(PREFIX_REGEX).flatten.first | |
formatted_prefix = '[' + club_ticket_prefix.upcase + ']' | |
message_text = File.read(message_file) | |
return if message_text.include?(formatted_prefix) | |
new_message_text = [formatted_prefix, message_text].join(' ') | |
File.write(message_file, new_message_text) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment