cookbook-release 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MWQzMDg0OGQyN2ZhYmQ0NGY2OTQyMGJlOTE1OGIxYzU3MDI3OWY1MQ==
4
+ N2Y5ZDZjMzE3MjM4NjY2YTJjZDMyYWQ3NTIxYTUwOGRiYTc5MjY5Yg==
5
5
  data.tar.gz: !binary |-
6
- MmYxMWY2ODg1MjhjYjMxZTRjYjlhNzFkNWY2NzlhOTAzMGFjMGI3MQ==
6
+ NmM3YWY0YjYxZmY5ZjQwY2UyODc3MGYyYTk4YTBiNGZmZDQ2NWYyNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTE3MTU5MjY3YTMzMGRkMjY0MjhjNzA0NWUwMTE2NDk1YjE1ODA3OGZlOTM3
10
- MTMxY2QwMmEyMWRhMmI4MDE3M2Q3NGQzM2Q1NjRiNDJlMTdkMmRmODRiMWEy
11
- NzcyZDAxYTE2NjQ1MDZmODIyNDI0MjEyZWY0MTY1MGM2ZjdlY2M=
9
+ ODE2ZjdjYjVlMWU2OTBmOTZjNjdmNmJiOGVkMDdmNmIwYjYwZDgyNDQwMDAz
10
+ YTMzYmUwMjAxNjkwZDMzN2Q2ODBiNzBlYjg5Y2Y4M2NhNDk1OTllZTQ0MjAy
11
+ NzUyMjYzZTExNjdkMDgyY2IwNThhYjE1MTQ4MzBmNzY4YzdkOGM=
12
12
  data.tar.gz: !binary |-
13
- OTQ3ZjdkZTA0YzU5NzUxNmQyYmY5OWE5MmQ0NjBkOGJjNDFkMDBkYjFiMDg2
14
- MThjZDZmYWVmN2QxOGE3MjI2NjEzMmE0M2JiNjVmYTY2YzljYjU3ZDcwZjU0
15
- ZTZkODAzZDY1ZjVhZTM0OTMyOTEzNTQ3MWZjNWIyYjYxODY2NDc=
13
+ ZmI1OTUxNmUxMmIxNWQzZmY2YWNjOWRjNjVhNDJmZjYxOGE5ZDRhYzBiN2Ez
14
+ ZWVmNTE4ZDI2N2U3ZjdhNDE3MWQ4ZWRhODI1ZDk3OTI4YjljMWRhMDQ1MDlm
15
+ MWVjMDc1ZWY3YWEwOTQzNTI1MTQ3NTNjYzBkMDA2OWEwZGQ4ZDk=
@@ -6,7 +6,7 @@ require 'English'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'cookbook-release'
9
- spec.version = '1.1.2'
9
+ spec.version = '1.1.3'
10
10
  spec.authors = ['Grégoire Seux']
11
11
  spec.email = 'g.seux@criteo.com'
12
12
  spec.summary = 'Provide primitives (and rake tasks) to release a cookbook'
@@ -36,15 +36,22 @@ module CookbookRelease
36
36
  raise "All changes must be committed!" unless clean_index?
37
37
  end
38
38
 
39
- def compute_last_release
40
-
39
+ def _compute_last_release
41
40
  tag = Mixlib::ShellOut.new([
42
41
  'git describe',
43
42
  "--tags",
44
43
  "--match \"#{@tag_prefix}[0-9]\.[0-9]*\.[0-9]*\""
45
44
  ].join(" "), @shellout_opts)
46
45
  tag.run_command
47
- last = tag.stdout.split('-').first
46
+ tag.stdout.split('-').first
47
+ end
48
+
49
+ def has_any_release?
50
+ !!_compute_last_release
51
+ end
52
+
53
+ def compute_last_release
54
+ last = _compute_last_release
48
55
  unless last
49
56
  $stderr.puts "No last release found, defaulting to 0.1.0"
50
57
  last = '0.1.0'
@@ -38,6 +38,7 @@ module CookbookRelease
38
38
 
39
39
  # return the new version and the reasons
40
40
  def new_version
41
+ return ['0.1.0'.to_version, []] unless git.has_any_release?
41
42
  %w(major minor patch).each do |level|
42
43
  changes = git_changelog.select(&"#{level}?".to_sym)
43
44
  return [ last_release.send("#{level}!"), changes ] if changes.size > 0
data/spec/release_spec.rb CHANGED
@@ -31,6 +31,7 @@ describe Release do
31
31
  :clean_index! => true,
32
32
  :compute_last_release => '1.0.0'.to_version,
33
33
  :compute_changelog => [c],
34
+ :has_any_release? => true,
34
35
  :tag => true,
35
36
  :push_tag => true,
36
37
  )
@@ -51,6 +52,7 @@ describe Release do
51
52
  it 'raise when no commit has been made since last release' do
52
53
  allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
53
54
  expect(git).to receive(:compute_changelog).and_return([])
55
+ expect(git).to receive(:has_any_release?).and_return(true)
54
56
 
55
57
  release = Release.new(git)
56
58
  expect{release.new_version}.to raise_error(Release::ExistingRelease, /no commit since/i)
@@ -59,6 +61,7 @@ describe Release do
59
61
  it 'suggests major release when one commit is major' do
60
62
  allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
61
63
  expect(git).to receive(:compute_changelog).and_return([minor, minor, major, patch])
64
+ expect(git).to receive(:has_any_release?).and_return(true)
62
65
 
63
66
  release = Release.new(git)
64
67
  new_version, reasons = release.new_version
@@ -69,6 +72,7 @@ describe Release do
69
72
  it 'suggests minor release when one commit is minor' do
70
73
  allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
71
74
  expect(git).to receive(:compute_changelog).and_return([minor, minor, patch, patch])
75
+ expect(git).to receive(:has_any_release?).and_return(true)
72
76
 
73
77
  release = Release.new(git)
74
78
  new_version, reasons = release.new_version
@@ -79,6 +83,7 @@ describe Release do
79
83
  it 'suggests patch release when all commits are patches' do
80
84
  allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
81
85
  expect(git).to receive(:compute_changelog).and_return([patch, patch, patch])
86
+ expect(git).to receive(:has_any_release?).and_return(true)
82
87
 
83
88
  release = Release.new(git)
84
89
  new_version, reasons = release.new_version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookbook-release
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grégoire Seux
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-29 00:00:00.000000000 Z
11
+ date: 2016-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: semantic