cookbook-release 1.4.6 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
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