octopolo 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yzk5NjJkNWE2MzhhYTkxOWVhMzFiZGUxMDRhMTgwNTAyY2UzMjQ1ZA==
4
+ YThjY2Y2ZTMyNzRjNTdjYTZlMjk5MjhjNzI5YWU5NDQyYzM5Y2U3Mw==
5
5
  data.tar.gz: !binary |-
6
- MTVhNTUyNmZhY2NmZGYzZTRkOGJhM2M2MzRmOTE1ZWViNWI3NDJmZA==
6
+ ZmE2NjdkMzE5MDc5NWI5ODU4YWQ4OWJlM2QwYWJlZTZjN2NkOWVhMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTM0M2VjODQyNGY2YmE1YjQ1YTI1ZTRmNjFiZWZiNDg0NmYyMjNjMmY2MDJk
10
- ODlkYjYxYzEzZDExNjI0Mzk3M2JlNmYzYjEzNTI1MzQzN2Y3MTM4MGQ2ZjE5
11
- NDRkZThhMjVkYzcxMTVkMDExZjcwM2Q2MmQ1YzI0NmZhZGUxYWQ=
9
+ NmU3ZmJlOTg4MTE0NWVhNDhkODkwYzdiODc0Mjc4Zjg1ODBiM2U4MzQyYzZm
10
+ NGYxMmU1MTYxZmQ0NDQyNTg4MDZiZDUyYjY5ZmJlYzQ1ZDNmMzRmYTg4YjZh
11
+ YmM3N2IwMzRhMjlkMTAxYzMwYzQxMDhlMzQ2MjM3NTBlZDYxYTM=
12
12
  data.tar.gz: !binary |-
13
- YjIwODg3ODA4NGI2MWQ2YTY4YzllZTNlZDY2YzNkMWFmMDgzZmM4NTRiNDUy
14
- ZDk4NTc5OTNhOWZmMGEwNzM2OGU5NjJhMThjNmVlYTQ4NTY5MzYzMTI0MDA1
15
- ZmVkNWUyYmExMTEwNDlkMjIzZDAwNzE2NDIwZGZiM2M0NTU2MTQ=
13
+ YjI1OTllMmVlYzBmMzI3N2QxOWEzZjYxZTNmYmEzNzM3ZGVmZDU5YjVlYWFm
14
+ YmMxM2UzZGExY2Y4ZDYwNmUzYjVhOTRiZDMwZjFkODM4YTkzZjZmNzBkMTI0
15
+ YTAzOTgwN2ZkZjMyZGM4MTk0ZTZlN2I1YTYyMDQzNWQ4ZDUwOWQ=
@@ -1 +1 @@
1
- 1.9.3-p448
1
+ 1.9.3
@@ -0,0 +1,13 @@
1
+ defaults:
2
+ deploy_cmd: gem push *.gem
3
+ before_deploy_cmds:
4
+ - /usr/local/bin/op tag-release
5
+ - sed -i "" -e "s/\".*/\"$(git tag| sort -n -t. -k1,1 -k2,2 -k3,3 | tail -1 | sed s/v//)\"/" lib/octopolo/version.rb
6
+ - git add lib/octopolo/version.rb
7
+ - git commit -m "Version Bump" && git push
8
+ - gem build octopolo.gemspec
9
+ after_deploy_cmds:
10
+ - rm *.gem
11
+ environments:
12
+ -
13
+ rubygems: {}
@@ -1,3 +1,21 @@
1
+ #### v0.1.4
2
+ #### v0.2.0
3
+ * Fixes github-auth
4
+
5
+ > Nick LaMuro: Elliot Hursh: https://github.com/sportngin/octopolo/pull/38
6
+
7
+ * Add semantic versioning tagging
8
+
9
+ > Alec Gorjestani, Nick LaMuro: Michael Pillsbury: https://github.com/sportngin/octopolo/pull/35
10
+
11
+ * Use the correct key when passing destination flag
12
+
13
+ > Nick LaMuro: Elliot Hursh: https://github.com/sportngin/octopolo/pull/33
14
+
15
+ * minor changes to the help text
16
+
17
+ > Michael Pillsbury: Andy Fleener: https://github.com/sportngin/octopolo/pull/32
18
+
1
19
  #### v0.1.3
2
20
 
3
21
  * Label tweaks
@@ -5,7 +5,7 @@ require_relative '../lib/octopolo'
5
5
 
6
6
  include GLI::App
7
7
 
8
- program_desc 'GitHub workflow scripts. From the Ngineers as SportNgin.'
8
+ program_desc 'GitHub workflow scripts. From the Ngineers at Sport Ngin.'
9
9
  version Octopolo::VERSION
10
10
 
11
11
  wrap_help_text :verbatim
data/bin/op CHANGED
@@ -5,7 +5,7 @@ require_relative '../lib/octopolo'
5
5
 
6
6
  include GLI::App
7
7
 
8
- program_desc 'GitHub workflow scripts. From the Ngineers as SportNgin.'
8
+ program_desc 'GitHub workflow scripts. From the Ngineers at Sport Ngin.'
9
9
  version Octopolo::VERSION
10
10
 
11
11
  wrap_help_text :verbatim
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env zsh
2
+
3
+ if [[ ! -o interactive ]]; then
4
+ return
5
+ fi
6
+
7
+ compctl -K _octopolo octopolo op
8
+
9
+ _octopolo() {
10
+ local words completions
11
+ read -cA words
12
+ completions="$(op help -c)"
13
+ reply=("${(ps:\n:)completions}")
14
+ }
@@ -8,6 +8,6 @@ command 'pull-request' do |c|
8
8
  c.action do |global_options, options, args|
9
9
  require_relative '../scripts/pull_request'
10
10
  options = global_options.merge(options)
11
- Octopolo::Scripts::PullRequest.execute options[:destination_branch]
11
+ Octopolo::Scripts::PullRequest.execute options[:destination]
12
12
  end
13
13
  end
@@ -1,13 +1,20 @@
1
- arg :suffix, :desc => "Suffix to apply to to the dated tag"
2
-
3
- desc "Create and push a timestamped tag with an optional suffix"
1
+ desc "Create and push a tag (timestamped tag with an optional suffix or semantic version tag)"
4
2
  command 'tag-release' do |c|
3
+ c.flag :prefix, :desc => "Prefix to apply to to the tag"
4
+ c.flag :suffix, :desc => "Suffix to apply to to the tag"
5
+
5
6
  c.desc "Create tag even if not on deploy branch"
6
7
  c.switch :force, :negatable => false
8
+ c.desc "Increment major version (if semantic_versioning enabled)"
9
+ c.switch :major, :negatable => false
10
+ c.desc "Increment minor version (if semantic_versioning enabled)"
11
+ c.switch :minor, :negatable => false
12
+ c.desc "Increment patch version (if semantic_versioning enabled)"
13
+ c.switch :patch, :negatable => false
7
14
 
8
15
  c.action do |global_options, options, args|
9
16
  require_relative '../scripts/tag_release'
10
17
  options = global_options.merge(options)
11
- Octopolo::Scripts::TagRelease.execute args.first, options[:force]
18
+ Octopolo::Scripts::TagRelease.execute options
12
19
  end
13
20
  end
@@ -81,6 +81,10 @@ module Octopolo
81
81
  @jira_url || raise(MissingRequiredAttribute, "Jira Url is required") if use_jira
82
82
  end
83
83
 
84
+ def semantic_versioning
85
+ @semantic_versioning || false
86
+ end
87
+
84
88
  # end defaults
85
89
 
86
90
  def self.parse
@@ -1,3 +1,5 @@
1
+ require "semantic" # semantic versioning class (parsing, comparing)
2
+
1
3
  module Octopolo
2
4
  # Abstraction around local Git commands
3
5
  class Git
@@ -6,6 +8,9 @@ module Octopolo
6
8
  # we use date-based tags, so look for anything starting with a 4-digit year
7
9
  RELEASE_TAG_FILTER = /^\d{4}.*/
8
10
  RECENT_TAG_LIMIT = 9
11
+ # for semver tags
12
+ SEMVER_TAG_FILTER = Semantic::Version::SemVerRegexp
13
+
9
14
  # branch prefixes
10
15
  DEPLOYABLE_PREFIX = "deployable"
11
16
  STAGING_PREFIX = "staging"
@@ -204,6 +209,15 @@ module Octopolo
204
209
  release_tags.last(RECENT_TAG_LIMIT)
205
210
  end
206
211
 
212
+ # Public: The list of releases with semantic versioning which have been tagged
213
+ #
214
+ # Returns an Array of Strings containing the tag names
215
+ def self.semver_tags
216
+ Git.perform_quietly("tag").split("\n").select do |tag|
217
+ tag.sub(/\Av/i,'') =~ SEMVER_TAG_FILTER
218
+ end
219
+ end
220
+
207
221
  # Public: Create a new tag with the given name
208
222
  #
209
223
  # tag_name - The name of the tag to create
@@ -13,6 +13,10 @@ module Octopolo
13
13
  attr_accessor :auth_response
14
14
  attr_accessor :user_defined_token
15
15
 
16
+ def self.execute
17
+ new.execute
18
+ end
19
+
16
20
  def execute
17
21
  case ask_auth_method
18
22
  when "Generate an API token with my credentials"
@@ -1,4 +1,8 @@
1
1
  require "date" # necessary to get the Date.today convenience method
2
+ require "semantic" # semantic versioning class (parsing, comparing)
3
+ require "semantic/core_ext"
4
+ require "octopolo/semver_tag_scrubber"
5
+
2
6
  require_relative "../scripts"
3
7
  require_relative "../changelog"
4
8
 
@@ -9,19 +13,31 @@ module Octopolo
9
13
  include ConfigWrapper
10
14
  include GitWrapper
11
15
 
16
+ attr_accessor :prefix
12
17
  attr_accessor :suffix
13
18
  attr_accessor :force
19
+ attr_accessor :major
20
+ attr_accessor :minor
21
+ attr_accessor :patch
14
22
  alias_method :force?, :force
23
+ alias_method :major?, :major
24
+ alias_method :minor?, :minor
25
+ alias_method :patch?, :patch
15
26
 
16
27
  TIMESTAMP_FORMAT = "%Y.%m.%d.%H.%M"
28
+ SEMVER_CHOICES = %w[Major Minor Patch]
17
29
 
18
- def self.execute(suffix=nil, force=false)
19
- new(suffix, force).execute
30
+ def self.execute(options=nil)
31
+ new(options).execute
20
32
  end
21
33
 
22
- def initialize(suffix=nil, force=false)
23
- @suffix = suffix
24
- @force = force
34
+ def initialize(options={})
35
+ @prefix = options[:prefix]
36
+ @suffix = options[:suffix]
37
+ @force = options[:force]
38
+ @major = options[:major]
39
+ @minor = options[:minor]
40
+ @patch = options[:patch]
25
41
  end
26
42
 
27
43
  def execute
@@ -40,6 +56,14 @@ module Octopolo
40
56
  force? || (git.current_branch == config.deploy_branch)
41
57
  end
42
58
 
59
+ def update_changelog
60
+ changelog.open do |log|
61
+ log.puts "#### #{tag_name}"
62
+ end
63
+ git.perform("add #{changelog.filename}")
64
+ git.perform("commit -m 'Updating Changelog for #{tag_name}'")
65
+ end
66
+
43
67
  # Public: Generate a tag for the current release
44
68
  def tag_release
45
69
  git.new_tag tag_name
@@ -47,21 +71,56 @@ module Octopolo
47
71
 
48
72
  # Public: The name to apply to the new tag
49
73
  def tag_name
50
- @tag_name ||= %Q(#{Time.now.strftime(TIMESTAMP_FORMAT)}#{"_#{suffix}" if suffix})
74
+ if config.semantic_versioning
75
+ @tag_name ||= tag_semver
76
+ else
77
+ @tag_name ||= %Q(#{Time.now.strftime(TIMESTAMP_FORMAT)}#{"_#{suffix}" if suffix})
78
+ end
51
79
  end
52
80
 
53
- def changelog
54
- @changelog ||= Changelog.new
81
+ def tag_semver
82
+ current_version = get_current_version
83
+ set_prefix
84
+ ask_user_version unless @major || @minor || @patch
85
+ new_version = upgrade_version current_version
86
+ "#{prefix}#{new_version.to_s}"
55
87
  end
56
88
 
57
- def update_changelog
58
- changelog.open do |log|
59
- log.puts "#### #{tag_name}"
89
+ def get_current_version
90
+ tags = git.semver_tags
91
+ tags.map{|tag| Octopolo::SemverTagScrubber.scrub_prefix(tag); tag.to_version }.sort.last || "0.0.0".to_version
92
+ end
93
+
94
+ def ask_user_version
95
+ response = cli.ask("Which version section do you want to increment?", SEMVER_CHOICES)
96
+ send("#{response.downcase}=", true)
97
+ end
98
+
99
+ def upgrade_version current_version
100
+ if @major
101
+ current_version.major += 1
102
+ current_version.minor = 0
103
+ current_version.patch = 0
104
+ elsif @minor
105
+ current_version.minor += 1
106
+ current_version.patch = 0
107
+ elsif @patch
108
+ current_version.patch+=1
60
109
  end
61
- git.perform("add #{changelog.filename}")
62
- git.perform("commit -m 'Updating Changelog for #{tag_name}'")
110
+ current_version
63
111
  end
64
112
 
113
+ # Private: the changelog file
114
+ def changelog
115
+ @changelog ||= Changelog.new
116
+ end
117
+
118
+ # Private: sets/removes the prefix from the tag
119
+ #
120
+ # Allows the tag to play nice with the semantic gem
121
+ def set_prefix
122
+ @prefix ||= Octopolo::SemverTagScrubber.scrub_prefix(git.semver_tags.last)
123
+ end
65
124
  end
66
125
  end
67
126
 
@@ -0,0 +1,21 @@
1
+ module Octopolo
2
+ class SemverTagScrubber
3
+
4
+ def self.scrub_prefix(tag)
5
+ scrub_via_regexp(tag, /\A[a-z]*/i)
6
+ end
7
+
8
+ def self.scrub_suffix(tag)
9
+ scrub_via_regexp(tag, /[a-z]*\z/i)
10
+ end
11
+
12
+ private
13
+
14
+ def self.scrub_via_regexp(tag, regexp)
15
+ result = tag.match(regexp)[0]
16
+ tag.gsub!(regexp, '')
17
+ result
18
+ end
19
+
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Octopolo
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -23,6 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_dependency 'highline', '~> 1.6'
24
24
  gem.add_dependency 'pivotal-tracker', '~> 0.5'
25
25
  gem.add_dependency 'jiralicious'
26
+ gem.add_dependency 'semantic', '~> 1.3.0'
26
27
 
27
28
  gem.add_development_dependency 'rspec', '~> 2.99.0'
28
29
  gem.add_development_dependency "guard"
@@ -323,6 +323,21 @@ module Octopolo
323
323
  end
324
324
  end
325
325
 
326
+ context ".semver_tags" do
327
+ let(:valid1) { "0.0.1" }
328
+ let(:valid2) { "v0.0.3" }
329
+ let(:invalid) { "foothing" }
330
+ let(:tags) { [valid1, invalid, valid2].join("\n") }
331
+
332
+ it "returns all the tags set as a sematic version" do
333
+ Git.should_receive(:perform_quietly).with("tag") { tags }
334
+ release_tags = Git.semver_tags
335
+ release_tags.should_not include invalid
336
+ release_tags.should include valid1
337
+ release_tags.should include valid2
338
+ end
339
+ end
340
+
326
341
  context ".new_branch(new_branch_name, source_branch_name)" do
327
342
  let(:new_branch_name) { "foo" }
328
343
  let(:source_branch_name) { "bar" }
@@ -4,10 +4,12 @@ require "octopolo/scripts/tag_release"
4
4
  module Octopolo
5
5
  module Scripts
6
6
  describe TagRelease do
7
- let(:config) { stub(:config, deploy_branch: "something") }
7
+ let(:config) { stub(:config, deploy_branch: "something", semantic_versioning: false) }
8
8
  let(:cli) { stub(:cli) }
9
9
  let(:git) { stub(:git) }
10
- let(:suffix) { "foo" }
10
+ let(:prefix) { "foo" }
11
+ let(:suffix) { "bar" }
12
+ let(:options) { Hash.new }
11
13
  subject { TagRelease.new }
12
14
 
13
15
  before do
@@ -17,25 +19,50 @@ module Octopolo
17
19
  :git => git
18
20
  })
19
21
  TagRelease.any_instance.stub(:update_changelog)
22
+ options[:force] = false
23
+ options[:major] = false
24
+ options[:minor] = false
25
+ options[:patch] = false
20
26
  end
21
27
 
22
- context "#new" do
23
- it "accepts the given parameter as the tag suffix" do
24
- expect(TagRelease.new(suffix).suffix).to eq(suffix)
28
+ describe "#new" do
29
+ it "accepts a flag to set the tag prefix" do
30
+ options[:prefix] = prefix
31
+ expect(TagRelease.new(options).prefix).to eq(prefix)
25
32
  end
26
33
 
27
- it "accepts a flag to force creating the new tag even if not on deploy branch" do
34
+ it "accepts a flag to set the tag suffix" do
35
+ options[:suffix] = suffix
36
+ expect(TagRelease.new(options).suffix).to eq(suffix)
37
+ end
38
+
39
+ it "accepts a switch to force creating the new tag even if not on deploy branch" do
40
+ options[:force] = true
41
+ expect(TagRelease.new(options).force?).to be_true
42
+ end
43
+
44
+ it "accepts a switch to increment major version" do
45
+ options[:major] = true
46
+ expect(TagRelease.new(options).major?).to be_true
47
+ end
28
48
 
29
- expect(TagRelease.new(nil, true).force?).to be_true
49
+ it "accepts a switch to increment minor version" do
50
+ options[:minor] = true
51
+ expect(TagRelease.new(options).minor?).to be_true
52
+ end
53
+
54
+ it "accepts a switch to increment patch version" do
55
+ options[:patch] = true
56
+ expect(TagRelease.new(options).patch?).to be_true
30
57
  end
31
58
 
32
59
  it "defaults to no suffix and not to force" do
33
60
  expect(subject.suffix).to be_nil
34
- expect(subject.force?).to be_false
61
+ expect(subject.force?).to be_falsey
35
62
  end
36
63
  end
37
64
 
38
- context "#execute" do
65
+ describe "#execute" do
39
66
  it "tags the release if on the release branch" do
40
67
  subject.stub(:should_create_branch?) { true }
41
68
  subject.should_receive(:tag_release)
@@ -49,7 +76,7 @@ module Octopolo
49
76
  end
50
77
  end
51
78
 
52
- context "#should_create_branch?" do
79
+ describe "#should_create_branch?" do
53
80
  before do
54
81
  subject.force = false
55
82
  end
@@ -76,32 +103,121 @@ module Octopolo
76
103
  end
77
104
  end
78
105
 
79
- context "#tag_release" do
106
+ describe "#tag_release" do
80
107
  it "tells Git to make the tag" do
81
- subject.stub(:tag_name) { "somet-tag" }
108
+ subject.stub(:tag_name) { "some-tag" }
82
109
  git.should_receive(:new_tag).with(subject.tag_name)
83
110
  subject.tag_release
84
111
  end
85
112
  end
86
113
 
87
- context "#tag_name" do
88
- let(:sample_time) { Time.new }
89
- let(:formatted_timestamp) { sample_time.strftime(TagRelease::TIMESTAMP_FORMAT) }
114
+ describe "#tag_name" do
115
+ context "with timestamp tag" do
116
+ let(:sample_time) { Time.new }
117
+ let(:formatted_timestamp) { sample_time.strftime(TagRelease::TIMESTAMP_FORMAT) }
90
118
 
91
- before do
92
- Time.stub(:now) { sample_time }
119
+ before do
120
+ Time.stub(:now) { sample_time }
121
+ end
122
+
123
+ it "is based on the timestamp" do
124
+ subject.suffix = nil
125
+ expect(subject.tag_name).to eq(formatted_timestamp)
126
+ end
127
+
128
+ it "applies the suffix if has one" do
129
+ subject.suffix = suffix
130
+ expect(subject.tag_name).to eq("#{formatted_timestamp}_#{suffix}")
131
+ end
132
+ end
133
+
134
+ context "with semantic versioning tag of 0.0.2" do
135
+ before do
136
+ subject.config.stub(:semantic_versioning) { true }
137
+ subject.git.stub(:semver_tags) { ['0.0.1', '0.0.2'] }
138
+ end
139
+
140
+ context "incrementing patch" do
141
+ it "bumps the version to 0.0.3" do
142
+ subject.patch = true
143
+ expect(subject.tag_name).to eq('0.0.3')
144
+ end
145
+ end
146
+
147
+ context "incrementing minor" do
148
+ it "bumps the version to 0.1.0" do
149
+ subject.minor = true
150
+ expect(subject.tag_name).to eq('0.1.0')
151
+ end
152
+ end
153
+
154
+ context "incrementing major" do
155
+ it "bumps the version to 1.0.0" do
156
+ subject.major = true
157
+ expect(subject.tag_name).to eq('1.0.0')
158
+ end
159
+ end
160
+
161
+ context "with a prefix of v" do
162
+ before do
163
+ subject.major = true
164
+ subject.git.stub(:semver_tags) { %w[v0.0.1 v0.0.2] }
165
+ end
166
+
167
+ it "sets the prefix to v" do
168
+ subject.tag_name
169
+ expect(subject.prefix).to eq('v')
170
+ end
171
+
172
+ it "returns the tag name with the prefix" do
173
+ subject.instance_variable_set(:@tag_name, nil)
174
+ expect(subject.tag_name).to eq('v1.0.0')
175
+ end
176
+ end
177
+ end
178
+ end # describe "#tag_name"
179
+
180
+ describe "#ask_user_version" do
181
+ let(:semver_choice_question) { "Which version section do you want to increment?" }
182
+
183
+ it "sets @major when user response with 'Major'" do
184
+ expect(subject.cli).to receive(:ask).with(semver_choice_question, TagRelease::SEMVER_CHOICES)
185
+ .and_return('Major')
186
+ subject.ask_user_version
187
+ expect(subject.major).to be_true
93
188
  end
94
189
 
95
- it "is based on the timestamp" do
96
- subject.suffix = nil
97
- expect(subject.tag_name).to eq(formatted_timestamp)
190
+ it "sets @minor when user response with 'minor'" do
191
+ expect(subject.cli).to receive(:ask).with(semver_choice_question, TagRelease::SEMVER_CHOICES)
192
+ .and_return('Minor')
193
+ subject.ask_user_version
194
+ expect(subject.minor).to be_true
98
195
  end
99
196
 
100
- it "applies the suffix if has one" do
101
- subject.suffix = suffix
102
- expect(subject.tag_name).to eq("#{formatted_timestamp}_#{suffix}")
197
+ it "sets @patch when user response with 'patch'" do
198
+ expect(subject.cli).to receive(:ask).with(semver_choice_question, TagRelease::SEMVER_CHOICES)
199
+ .and_return('Patch')
200
+ subject.ask_user_version
201
+ expect(subject.patch).to be_true
103
202
  end
104
203
  end
204
+
205
+ describe "#set_prefix" do
206
+ let(:tag) { "v0.0.2" }
207
+ let(:git) { double(:semver_tags => [tag]) }
208
+
209
+ it "sets the prefix" do
210
+ subject.set_prefix
211
+ expect(subject.prefix).to eq("v")
212
+ end
213
+
214
+ it "does not overwrite the prefix" do
215
+ subject.prefix = "prefix"
216
+ subject.set_prefix
217
+ expect(subject.prefix).to eq("prefix")
218
+ end
219
+ end
220
+
105
221
  end
106
222
  end
107
223
  end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+ require "octopolo/semver_tag_scrubber"
3
+
4
+ module Octopolo
5
+ describe SemverTagScrubber do
6
+ let(:tag) { "Prefix0.0.1Suffix" }
7
+
8
+ describe "::scrub_prefix" do
9
+ it "returns the prefix" do
10
+ expect(SemverTagScrubber.scrub_prefix tag).to eq("Prefix")
11
+ end
12
+
13
+ it "scrub the prefix from the tag" do
14
+ SemverTagScrubber.scrub_prefix tag
15
+ expect(tag).to eq("0.0.1Suffix")
16
+ end
17
+ end
18
+
19
+ describe "::scrub_suffix" do
20
+ it "returns the suffix" do
21
+ expect(SemverTagScrubber.scrub_suffix tag).to eq("Suffix")
22
+ end
23
+
24
+ it "scrub the suffix from the tag" do
25
+ SemverTagScrubber.scrub_suffix tag
26
+ expect(tag).to eq("Prefix0.0.1")
27
+ end
28
+ end
29
+
30
+ end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octopolo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Byrne
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-30 00:00:00.000000000 Z
12
+ date: 2015-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -109,6 +109,20 @@ dependencies:
109
109
  - - ! '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: semantic
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: 1.3.0
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.3.0
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: rspec
114
128
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +192,7 @@ files:
178
192
  - .gitignore
179
193
  - .ruby-gemset
180
194
  - .ruby-version
195
+ - .soyuz.yml
181
196
  - .travis.yml
182
197
  - CHANGELOG.markdown
183
198
  - Gemfile
@@ -185,9 +200,10 @@ files:
185
200
  - MIT-LICENSE
186
201
  - README.markdown
187
202
  - Rakefile
188
- - bash_completion.sh
189
203
  - bin/octopolo
190
204
  - bin/op
205
+ - completion/octopolo.sh
206
+ - completion/octopolo.zsh
191
207
  - lib/octopolo.rb
192
208
  - lib/octopolo/changelog.rb
193
209
  - lib/octopolo/cli.rb
@@ -238,6 +254,7 @@ files:
238
254
  - lib/octopolo/scripts/stale_branches.rb
239
255
  - lib/octopolo/scripts/sync_branch.rb
240
256
  - lib/octopolo/scripts/tag_release.rb
257
+ - lib/octopolo/semver_tag_scrubber.rb
241
258
  - lib/octopolo/templates/pull_request_body.erb
242
259
  - lib/octopolo/user_config.rb
243
260
  - lib/octopolo/version.rb
@@ -275,6 +292,7 @@ files:
275
292
  - spec/octopolo/scripts/stale_branches_spec.rb
276
293
  - spec/octopolo/scripts/sync_branch_spec.rb
277
294
  - spec/octopolo/scripts/tag_release_spec.rb
295
+ - spec/octopolo/semver_tag_scrubber_spec.rb
278
296
  - spec/octopolo/user_config_spec.rb
279
297
  - spec/octopolo_spec.rb
280
298
  - spec/spec_helper.rb
@@ -304,7 +322,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
304
322
  version: '0'
305
323
  requirements: []
306
324
  rubyforge_project:
307
- rubygems_version: 2.2.1
325
+ rubygems_version: 2.4.4
308
326
  signing_key:
309
327
  specification_version: 4
310
328
  summary: A set of Github workflow scripts.
@@ -340,6 +358,7 @@ test_files:
340
358
  - spec/octopolo/scripts/stale_branches_spec.rb
341
359
  - spec/octopolo/scripts/sync_branch_spec.rb
342
360
  - spec/octopolo/scripts/tag_release_spec.rb
361
+ - spec/octopolo/semver_tag_scrubber_spec.rb
343
362
  - spec/octopolo/user_config_spec.rb
344
363
  - spec/octopolo_spec.rb
345
364
  - spec/spec_helper.rb