cookbook-release 1.4.6 → 1.5.1

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7437fec8e18c6f3d3010cabcc1560d2f50a21fa9f3d3721fea2e11fbfa41245
4
- data.tar.gz: 528a77af3764cabb0ea07cb41b1d21c52e2ff57a306ce4924d129ee657da5522
3
+ metadata.gz: '0438ab5b35c35ac88fbc7f99b58e43882fe7fc2cb2d4299ed1d609cd0b702d4d'
4
+ data.tar.gz: 7390fd2694a610a5ac4fe0b81f4fdc6e7cbee9e4381d96f7b0ff9573f7c70cd0
5
5
  SHA512:
6
- metadata.gz: 14d6f53eab37b49ee1b5336e23f1f05fe4145b4f8b28610645d5418a9e8b18617081060fb5c96bc79ccc2136a2a890c1f0068403e065e9136ea1ea6a0d10ca92
7
- data.tar.gz: 5a5b26e7d8035f611a5a79dc03523d81ff8d9b87f97728ebcb9de3d3e9846d8b5b639c4c90b368355da887f42be209b3c934e1fccc9ebe2fcef1921def5d57f0
6
+ metadata.gz: 27ff8bf88d9e8453cfa5a46b45dd74e59ac5a8ba5e18b4b988b4acdf2a6b7d7b4e29c057ad73e402fcec7065b1662d5b8003496e100ce8592787da8441ab2a5f
7
+ data.tar.gz: 6e44f603a8aa0801968d3eea30574ef3b0c8751cb98c80b2d9f57f2511e80414d0f1cf978b4688105a58140c3e8123eb1437eeed355bb2507f85b5b53c181e23
@@ -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.4.6'
9
+ spec.version = '1.5.1'
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'
@@ -23,6 +23,12 @@ module CookbookRelease
23
23
  File.directory?(::File.join(dir, '.git'))
24
24
  end
25
25
 
26
+ def self.find_root(dir = Dir.pwd)
27
+ cmd = Mixlib::ShellOut.new("git rev-parse --show-toplevel", cwd: dir)
28
+ cmd.run_command
29
+ cmd.error? ? nil : cmd.stdout.chomp
30
+ end
31
+
26
32
  def reset_command(new_version)
27
33
  remote = choose_remote
28
34
  "git tag -d #{new_version} ; git push #{remote} :#{new_version}"
@@ -43,11 +49,13 @@ module CookbookRelease
43
49
  def _compute_last_release
44
50
  tag = Mixlib::ShellOut.new([
45
51
  'git describe',
52
+ "--abbrev=0",
46
53
  "--tags",
47
54
  "--match \"#{@tag_prefix}[0-9]*\.[0-9]*\.[0-9]*\""
48
55
  ].join(" "), @shellout_opts)
49
56
  tag.run_command
50
- tag.stdout.split('-').first
57
+ rel = tag.stdout.sub(/^#{@tag_prefix}/, '').chomp
58
+ rel.empty? ? nil : rel
51
59
  end
52
60
 
53
61
  def has_any_release?
@@ -64,7 +72,8 @@ module CookbookRelease
64
72
  end
65
73
 
66
74
  def compute_changelog(since, short_sha = true)
67
- @g.log(500).object(@sub_dir).between(since, 'HEAD').map do |commit|
75
+ ref = "#{@tag_prefix}#{since}"
76
+ @g.log(500).object(@sub_dir).between(ref, 'HEAD').map do |commit|
68
77
  message = commit.message.lines.map(&:chomp).compact.delete_if(&:empty?)
69
78
  Commit.new(
70
79
  author: commit.author.name,
@@ -5,13 +5,20 @@ module CookbookRelease
5
5
  def self.current_version(file)
6
6
  dir = File.dirname(file)
7
7
  version_file = File.join(dir, '.cookbook_version')
8
+ git_root = GitUtilities.find_root(dir)
8
9
 
9
- if !GitUtilities.git?(dir)
10
+ if !GitUtilities.git?(dir) && git_root.nil?
10
11
  return File.read(version_file) if File.exist?(version_file)
11
12
  raise "Can't determine version in a non-git environment without #{version_file}"
12
13
  end
13
14
 
14
- r = Release.new(GitUtilities.new(cwd: dir))
15
+ git = if git_root == dir
16
+ GitUtilities.new(cwd: dir)
17
+ else
18
+ GitUtilities.new(cwd: git_root, tag_prefix: "#{File.basename(dir)}-", sub_dir: dir)
19
+ end
20
+
21
+ r = Release.new(git)
15
22
  begin
16
23
  r.new_version.first
17
24
  rescue ExistingRelease
data/spec/git_spec.rb CHANGED
@@ -44,6 +44,12 @@ describe CookbookRelease::GitUtilities do
44
44
  expect(CookbookRelease::GitUtilities.git?(tmp)).to be(true)
45
45
  FileUtils.rm_rf(tmp)
46
46
  end
47
+
48
+ it 'finds repo\'s root from subdir' do
49
+ subdir = 'cookbooks/mycookbook'
50
+ FileUtils.mkdir_p(subdir)
51
+ expect(CookbookRelease::GitUtilities.find_root(subdir)).to eq(Dir.pwd)
52
+ end
47
53
  end
48
54
 
49
55
  describe '.clean_index(?|!)' do
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.4.6
4
+ version: 1.5.1
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: 2020-10-15 00:00:00.000000000 Z
11
+ date: 2021-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: semantic
@@ -194,7 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  requirements: []
197
- rubygems_version: 3.0.8
197
+ rubyforge_project:
198
+ rubygems_version: 2.7.6.2
198
199
  signing_key:
199
200
  specification_version: 4
200
201
  summary: Provide primitives (and rake tasks) to release a cookbook