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



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/pt-flow/ui.rb', line 49

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



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

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



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/pt-flow/ui.rb', line 37

def finish
  run "git push origin #{branch} -u"
  if @params.include?('--deliver')
    deliver!
  elsif @params.include?('--wip')
    open_url pull_request_url('[WIP]')
  else
    finish_task current_task
    open_url pull_request_url
  end
end

#startObject



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

def start
  if @params[0] && !@params[0].start_with?('--')
    task = create
  else
    filter = 'unstarted,started'
    filter += ',unscheduled' if @params.include?('--include-icebox')
    table = TasksTable.new(@project.stories.all(:current_state => filter))
    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