Class: PT::Flow::UI

Inherits:
UI
  • Object
show all
Defined in:
lib/pt-flow/ui.rb

Instance Method Summary collapse

Constructor Details

#initialize(command, args = []) ⇒ UI

Returns a new instance of UI.



4
5
6
# File 'lib/pt-flow/ui.rb', line 4

def initialize(command, args = [])
  super [command] + (args)
end

Instance Method Details

#cleanupObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/pt-flow/ui.rb', line 44

def cleanup
  title("Cleaning merged story branches for [#{branch.target}]")

  # Update our list of remotes
  run("git fetch")
  run("git remote prune origin")

  # Only clean out merged story branches for current topic
  filter = "#{branch.target}.\\+[0-9]\\+$"

  # Remove local branches fully merged with origin/current_target
  run("git branch --merged origin/#{branch.target} | grep '#{filter}' | xargs git branch -D")

  # Remove remote branches fully merged with origin/master
  run("git branch -r --merged origin/#{branch.target} | sed 's/ *origin\\///' | grep '#{filter}' | xargs -I% git push origin :%")

  congrats("Deleted branches merged with [#{branch.target}]")
end

#createObject



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/pt-flow/ui.rb', line 22

def create
  name = @params[0] || ask("Name for the new story:")
  types = { 'c' => 'chore', 'b' => 'bug', 'f' => 'feature' }
  task_type = types[ask('Type? (c)hore, (b)ug, (f)eature')]
  task = @project.stories.create(name: name, requested_by: @local_config[:user_name], story_type: task_type)
  if task.errors.any?
    error(task.errors.errors)
  else
    congrats("#{task_type} created: #{task.url}")
    task
  end
end

#finishObject



35
36
37
38
39
40
41
42
# File 'lib/pt-flow/ui.rb', line 35

def finish
  run("git push origin #{branch} -u")
  task = PivotalTracker::Story.find(branch.task_id, @project.id)
  title = task.name.gsub('"',"'") + " [Delivers ##{task.id}]"

  run("hub pull-request -b #{branch.target} -h #{repo.user}:#{branch} -m \"#{title}\"")
  finish_task(task)
end

#startObject



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/pt-flow/ui.rb', line 8

def start
  if @params[0]
    task = create
  else
    table = TasksTable.new(@client.get_work(@project))
    title("Available tasks in #{project_to_s}")
    task = select("Please select a task to start working on", table)
  end
  estimate_task(task, ask("How many points do you estimate for it? (#{@project.point_scale})")) if task.estimate && task.estimate < 0
  assign_task(task, @local_config[:user_name])
  start_task(task)
  run("git checkout -b #{Branch.from_task(task)}")
end