Skip to content

Instantly share code, notes, and snippets.

@jtemplet
Created March 26, 2012 05:41
Show Gist options
  • Save jtemplet/2203220 to your computer and use it in GitHub Desktop.
Save jtemplet/2203220 to your computer and use it in GitHub Desktop.
post-checkout hook to 'start' a pivotal story
#!/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