cookbook-release 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/cookbook-release.gemspec +2 -1
- data/lib/cookbook-release/git-utilities.rb +15 -24
- data/spec/git_spec.rb +22 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTI4MmYxOTQ2MTZkMTBjYzZkMDlhMGNiNzk2NGFlZmU4Y2NmMWY2NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTRkNTc4MmIyMWRjN2VmM2U2M2I3ZGJlNWVhZGI0MWYwNjZjYjhmMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YzVkNzZmZjNmYjdjNDg2Y2M1ZjFmNDU4ODJlMTliM2ZkOGE4MTIxMTM1NzNm
|
10
|
+
MGJmZTU4NmFiMTRiNWJjNjhkOWFjNTI0MDFjMmMyZGNmM2VlNjU0MTFlMDg0
|
11
|
+
ZDEyNDBhY2JkMmIyNGRkZDU4Yjk2NzJmMjZhMjhmMzQxOTRkMDI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzhiODZlYzc4OTllZmNhYzk3NTAyYWZkMzg3YzJiYzlkNWRjMjk2ZTExMzk5
|
14
|
+
YWUxMDA3OTJmZmZmMzAyNjhmMzE5MzUzNjI4OWM5NmI2MTFiMGRiNDYwNDk3
|
15
|
+
NGFkMDRhNWZkODUxMzY2Y2Q2OWFjNzY4MmY5ZDIxNGE4ZThlMzg=
|
data/cookbook-release.gemspec
CHANGED
@@ -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.
|
9
|
+
spec.version = '1.1.5'
|
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,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'highline'
|
24
24
|
spec.add_dependency 'mixlib-shellout'
|
25
25
|
spec.add_dependency 'chef'
|
26
|
+
spec.add_dependency 'git'
|
26
27
|
|
27
28
|
|
28
29
|
spec.add_development_dependency 'rspec'
|
@@ -2,6 +2,7 @@ require 'semantic'
|
|
2
2
|
require 'semantic/core_ext'
|
3
3
|
require 'mixlib/shellout'
|
4
4
|
require 'highline/import'
|
5
|
+
require 'git'
|
5
6
|
|
6
7
|
module CookbookRelease
|
7
8
|
class GitUtilities
|
@@ -10,13 +11,15 @@ module CookbookRelease
|
|
10
11
|
|
11
12
|
def initialize(options={})
|
12
13
|
@tag_prefix = options[:tag_prefix] || ''
|
14
|
+
cwd = options[:cwd] || Dir.pwd
|
13
15
|
@shellout_opts = {
|
14
|
-
cwd:
|
16
|
+
cwd: cwd
|
15
17
|
}
|
18
|
+
@g = Git.open(cwd)
|
16
19
|
end
|
17
20
|
|
18
21
|
def self.git?(dir)
|
19
|
-
|
22
|
+
@g.index.readable?
|
20
23
|
end
|
21
24
|
|
22
25
|
def reset_command(new_version)
|
@@ -59,32 +62,20 @@ module CookbookRelease
|
|
59
62
|
last.to_version
|
60
63
|
end
|
61
64
|
|
62
|
-
# These string are used to split git commit summary
|
63
|
-
# it just needs to be unlikely in a commit message
|
64
|
-
MAGIC_SEP = '@+-+@+-+@+-+@'
|
65
|
-
MAGIC_COMMIT_SEP = '@===@===@===@'
|
66
|
-
|
67
65
|
def compute_changelog(since)
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
subject: subject,
|
78
|
-
hash: hash,
|
79
|
-
body: body
|
80
|
-
})
|
81
|
-
end.compact.reject { |commit| commit[:subject] =~ /^Merge branch (.*) into/i }
|
66
|
+
commits = @g.log.between(since, 'HEAD').map do |commit|
|
67
|
+
message = commit.message.lines.map(&:chomp).compact.delete_if(&:empty?)
|
68
|
+
Commit.new(
|
69
|
+
author: commit.author.name,
|
70
|
+
subject: message.delete_at(0),
|
71
|
+
hash: commit.sha,
|
72
|
+
body: message.empty? ? nil : message.join('\n')
|
73
|
+
)
|
74
|
+
end.reject { |commit| commit[:subject] =~ /^Merge branch (.*) into/i }
|
82
75
|
end
|
83
76
|
|
84
77
|
def tag(version)
|
85
|
-
|
86
|
-
cmd.run_command
|
87
|
-
cmd.error!
|
78
|
+
@g.add_tag("#{@tag_prefix}#{version}")
|
88
79
|
end
|
89
80
|
|
90
81
|
def choose_remote
|
data/spec/git_spec.rb
CHANGED
@@ -106,5 +106,27 @@ describe CookbookRelease::GitUtilities do
|
|
106
106
|
expect(changelog.size).to eq(3)
|
107
107
|
expect(changelog.map {|c| c[:subject]}).to contain_exactly('A commit', 'Another commit', 'A third one')
|
108
108
|
end
|
109
|
+
|
110
|
+
it 'parse correctly commits' do
|
111
|
+
cmds = <<-EOH
|
112
|
+
touch toto
|
113
|
+
git add toto
|
114
|
+
git commit -m'none'
|
115
|
+
git tag 1.0.0
|
116
|
+
git commit --allow-empty -m "subject" -m "body"
|
117
|
+
git commit --allow-empty -m "without body"
|
118
|
+
EOH
|
119
|
+
cmds.split("\n").each do |cmd|
|
120
|
+
cmd = Mixlib::ShellOut.new(cmd)
|
121
|
+
cmd.run_command
|
122
|
+
cmd.error!
|
123
|
+
end
|
124
|
+
|
125
|
+
changelog = git.compute_changelog('1.0.0')
|
126
|
+
expect(changelog.size).to eq(2)
|
127
|
+
expect(changelog[1][:subject]).to eq('subject')
|
128
|
+
expect(changelog[1][:body]).to eq('body')
|
129
|
+
expect(changelog[0][:body]).to be_nil
|
130
|
+
end
|
109
131
|
end
|
110
132
|
end
|
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.
|
4
|
+
version: 1.1.5
|
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-10-
|
11
|
+
date: 2016-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: semantic
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: git
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|