Created
March 26, 2012 05:41
-
-
Save jtemplet/2203220 to your computer and use it in GitHub Desktop.
post-checkout hook to 'start' a pivotal story
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 | |
require 'rubygems' | |
require 'git' | |
require 'nokogiri' | |
def get_git_config(git_base) | |
config_vals = Hash.new | |
token = git_base.config['pivotal.api-token'] | |
proj_id = git_base.config['pivotal.project-id'] | |
config_vals["token"] = token | |
puts proj_id | |
config_vals["project_id"] = proj_id | |
return config_vals | |
end | |
def get_story_number_from_branch_name(branch_name) | |
tokens = branch_name.split("_") | |
return tokens[0] | |
end | |
def get_story_state(token, proj_id, story_id) | |
statement = "curl -q -H \"X-TrackerToken: #{token}\" -X GET \"http://www.pivotaltracker.com/services/v3/projects/#{proj_id}/stories/#{story_id}\"" | |
puts statement | |
story_xml = `#{statement}` | |
doc = Nokogiri::XML.parse(story_xml) | |
state = doc.search('//current_state').text | |
return state | |
end | |
def start_pivotal_story(token, proj_id, story_id) | |
statement = "curl -q -H \"X-TrackerToken: #{token}\" -X PUT -H \"Content-type: application/xml\" -d \"<story><current_state>started</current_state></story>\" \"http://www.pivotaltracker.com/services/v3/projects/#{proj_id}/stories/#{story_id}\"" | |
puts statement | |
response = `#{statement}` | |
puts response | |
end | |
first_hash = ARGV[0] | |
second_hash = ARGV[1] | |
is_branch_op = ARGV[2] | |
if (is_branch_op.eql?("1") && first_hash.eql?(second_hash)) | |
g = Git.open ('.') | |
if (!g.branch.current) | |
config_vals = get_git_config(g) | |
branch_name=`echo $(b=$(git symbolic-ref -q HEAD); { [ -n "$b" ] && echo ${b##refs/heads/}; } || echo HEAD)` | |
puts "Current Branch Name = #{branch_name}" | |
story_num = get_story_number_from_branch_name(branch_name) | |
story_state = get_story_state(config_vals["token"], config_vals["project_id"], story_num) | |
if (story_state.eql?("Not Yet Started")) | |
puts "Going to start story #{story_num}" | |
start_pivotal_story(config_vals["token"], config_vals["project_id"], story_num) | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment