class PivotalIntegration::Command::Start

The class that encapsulates starting a Pivotal Tracker Story

Public Instance Methods

run(*arguments) click to toggle source

Starts a Pivotal Tracker story by doing the following steps:

  • Create a branch

  • Add default commit hook

  • Start the story on Pivotal Tracker

@param [String, nil] filter a filter for selecting the story to start. This

filter can be either:
* a story id
* a story type (feature, bug, chore)
* +nil+

@return [void]

# File lib/pivotal-integration/command/start.rb, line 34
def run(*arguments)
  filter = arguments.first
  use_current_branch = @options.fetch(:use_current, false)

  if filter == 'new'
    arguments.shift
    story = PivotalIntegration::Util::Story.new(@project, *PivotalIntegration::Command::New.collect_type_and_name(arguments))
  else
    story = PivotalIntegration::Util::Story.select_story @project, filter
  end

  if story.estimate.nil? or story.estimate == -1
    PivotalIntegration::Util::Story.estimate(story, PivotalIntegration::Command::Estimate.collect_estimation(@project))
  end

  PivotalIntegration::Util::Story.pretty_print story

  development_branch_name = development_branch_name story
  PivotalIntegration::Util::Git.switch_branch 'master' unless use_current_branch
  PivotalIntegration::Util::Git.create_branch development_branch_name
  @configuration.story = story

  PivotalIntegration::Util::Git.add_hook 'prepare-commit-msg', File.join(File.dirname(__FILE__), 'prepare-commit-msg.sh')

  start_on_tracker story
end

Private Instance Methods

branch_prefix(story) click to toggle source
# File lib/pivotal-integration/command/start.rb, line 69
def branch_prefix(story)
  "#{story.id}-"
end
development_branch_name(story) click to toggle source
# File lib/pivotal-integration/command/start.rb, line 63
def development_branch_name(story)
  branch_name = branch_prefix(story) + ask("Enter branch name (#{branch_prefix(story)}<branch-name>): ")
  puts
  branch_name
end
start_on_tracker(story) click to toggle source
# File lib/pivotal-integration/command/start.rb, line 73
def start_on_tracker(story)
  print 'Starting story on Pivotal Tracker... '
  story.update(
    :current_state => 'started',
    :owned_by => PivotalIntegration::Util::Git.get_config('user.name')
  )
  puts 'OK'
end