cookbook-release 1.1.2 → 1.1.3

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
- 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