pivotal-brancher 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/pivotal-brancher/cli.rb +31 -15
  2. data/spec/start.rb +29 -10
  3. metadata +4 -4
@@ -8,8 +8,10 @@ module PivotalBrancher
8
8
  default_task :start
9
9
 
10
10
  no_commands do
11
- def story_branch_name(story)
12
- ([story.id] + story.name.split(/[^\w]+/).map(&:downcase)).join("_")
11
+ def story_branch_name(story, ids=nil)
12
+ ids ||= [story.id]
13
+ name = story.name.split(/[:-]\s*/, 2).last.gsub(/'/, '')
14
+ (name.split(/[^\w]+/).map(&:downcase) + ids).join("_")
13
15
  end
14
16
 
15
17
  def app=(app)
@@ -26,22 +28,36 @@ module PivotalBrancher
26
28
  def start
27
29
  stories = app.started_stories
28
30
  if stories.empty?
29
- say "No started stories found - could be you haven't started any stories yet?"
30
- exit
31
31
  end
32
- story = stories.shift
33
32
 
34
- #Need to handle empty case ( you should probably start a story...)
35
- #
33
+ branch_name =
34
+ case stories.length
35
+ when 0
36
+ say "No started stories found - could be you haven't started any stories yet?"
37
+ exit
38
+ when 1
39
+ story = stories.first
40
+ say "Switching to branch for:"
41
+ say "#{story.id}: #{story.name}"
42
+ story_branch_name(story)
43
+ when (2..4)
44
+ say "There are #{stories.length} stories started"
45
+ stories.each do |story|
46
+ say " #{story.id}: #{story.name}"
47
+ end
48
+ say
49
+ branchname = story_branch_name(stories.first, stories.map(&:id))
50
+ unless yes?("Start branch named #{branchname}?")
51
+ exit 1
52
+ end
53
+ branchname
54
+ else
55
+ say "You have #{stories.length} stories started - save some for later"
56
+ exit 1
57
+ end
36
58
 
37
- say "Switching to branch for:"
38
- say "#{story.id}: #{story.name}"
39
- say ""
40
- say "Other started stories are:"
41
- stories.each do |story|
42
- say "#{story.id}: #{story.name}"
43
- end
44
- git_command = "git checkout -b #{story_branch_name(story)}"
59
+
60
+ git_command = "git checkout -b #{branch_name}"
45
61
  if options.pretend?
46
62
  say "Would run: #{git_command}"
47
63
  else
data/spec/start.rb CHANGED
@@ -8,6 +8,12 @@ describe PivotalBrancher::Cli do
8
8
  end
9
9
  end
10
10
 
11
+ let :brancher_app do
12
+ PivotalBrancher::App.new.tap do |app|
13
+ app.stub(:started_stories).and_return(stories)
14
+ end
15
+ end
16
+
11
17
  let :cli do
12
18
  described_class.new.tap do |cli|
13
19
  cli.app = brancher_app
@@ -15,13 +21,28 @@ describe PivotalBrancher::Cli do
15
21
  end
16
22
  end
17
23
 
18
- describe "with started stories" do
19
- let :brancher_app do
20
- PivotalBrancher::App.new.tap do |app|
21
- app.stub(:started_stories).and_return(stories)
24
+ describe "with two started stories" do |app|
25
+ let :stories do
26
+ [
27
+ OpenStruct.new(:id => "123456", :name => "This: is a story"),
28
+ OpenStruct.new(:id => "123457", :name => "Whereas - a tale")
29
+ ]
30
+ end
31
+
32
+ before :each do
33
+ cli.stub(:yes? => true)
34
+ end
35
+
36
+ it "should build branch name" do
37
+ cli.should_receive(:run).with("git checkout -b is_a_story_123456_123457")
38
+ capture_stdout do
39
+ cli.start
22
40
  end
23
41
  end
42
+ end
24
43
 
44
+
45
+ describe "with started stories" do
25
46
  let :stories do
26
47
  [
27
48
  OpenStruct.new(:id => "123456", :name => "This: is a story")
@@ -35,11 +56,11 @@ describe PivotalBrancher::Cli do
35
56
  end
36
57
 
37
58
  it "should build branch names" do
38
- expect(cli.story_branch_name(stories.first)).to eql("123456_this_is_a_story")
59
+ expect(cli.story_branch_name(stories.first)).to eql("is_a_story_123456")
39
60
  end
40
61
 
41
62
  it "should execute git checkout -b" do
42
- cli.should_receive(:run).with("git checkout -b 123456_this_is_a_story")
63
+ cli.should_receive(:run).with("git checkout -b is_a_story_123456")
43
64
  capture_stdout do
44
65
  cli.start
45
66
  end
@@ -47,10 +68,8 @@ describe PivotalBrancher::Cli do
47
68
  end
48
69
 
49
70
  describe "with no started stories" do
50
- let :brancher_app do
51
- PivotalBrancher::App.new.tap do |app|
52
- app.stub(:started_stories).and_return([])
53
- end
71
+ let :stories do
72
+ []
54
73
  end
55
74
 
56
75
  it "should not execute git" do
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: pivotal-brancher
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
5
+ version: 0.0.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Judson Lester
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-25 00:00:00.000000000 Z
12
+ date: 2013-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  prerelease: false
@@ -105,7 +105,7 @@ rdoc_options:
105
105
  - --main
106
106
  - doc/README
107
107
  - --title
108
- - pivotal-brancher-0.0.3 Documentation
108
+ - pivotal-brancher-0.0.4 Documentation
109
109
  require_paths:
110
110
  - lib/
111
111
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  segments:
116
116
  - 0
117
- hash: 795572577
117
+ hash: 304253647
118
118
  version: '0'
119
119
  none: false
120
120
  required_rubygems_version: !ruby/object:Gem::Requirement