puppet-blacksmith 6.1.1 → 7.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/puppet_blacksmith/forge.rb +44 -88
- data/lib/puppet_blacksmith/git.rb +22 -27
- data/lib/puppet_blacksmith/modulefile.rb +12 -10
- data/lib/puppet_blacksmith/rake_tasks.rb +32 -30
- data/lib/puppet_blacksmith/version.rb +1 -1
- data/lib/puppet_blacksmith/version_helper.rb +43 -44
- metadata +44 -55
- data/lib/puppet_blacksmith/credentials.yml +0 -3
- data/spec/data/maestrodev-test/metadata.json +0 -18
- data/spec/data/metadata-different-author.json +0 -36
- data/spec/data/metadata-no-author.json +0 -35
- data/spec/data/metadata.json +0 -36
- data/spec/data/response.json +0 -341
- data/spec/puppet_blacksmith/forge_live_spec.rb +0 -14
- data/spec/puppet_blacksmith/forge_shared.rb +0 -37
- data/spec/puppet_blacksmith/forge_spec.rb +0 -122
- data/spec/puppet_blacksmith/git_spec.rb +0 -132
- data/spec/puppet_blacksmith/modulefile_spec.rb +0 -169
- data/spec/spec_helper.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc7a49583b726150615d46c2d2795e8d53a51cf8c9d2c6d10ea0c4eebee091c5
|
4
|
+
data.tar.gz: 0c86642a953bb1e44cb8cabec8316d2f54742917d66128cdd6b21d6afa49f36e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 402b086ce3bdf801efdcc7276c1c8822f57bc972449b1ec00e5260fb4dc0920e13d9cb6a4260125ade8e7ed24cc248ce78a428e7c8e041d5782c2a95d063af05
|
7
|
+
data.tar.gz: 2899546342c55ffa77c7f093a675220d07e95536d172106d2508273578e6d09438291e9effc0925ff37780347b3bdd27f9baf786eab583f6328df42857196be1
|
@@ -5,9 +5,8 @@ require 'base64'
|
|
5
5
|
|
6
6
|
module Blacksmith
|
7
7
|
class Forge
|
8
|
-
|
9
|
-
|
10
|
-
CREDENTIALS_FILE_HOME = "~/.puppetforge.yml"
|
8
|
+
PUPPETLABS_FORGE = 'https://forgeapi.puppetlabs.com'
|
9
|
+
CREDENTIALS_FILE_HOME = '~/.puppetforge.yml'
|
11
10
|
CREDENTIALS_FILE_PROJECT = '.puppetforge.yml'
|
12
11
|
FORGE_TYPE_PUPPET = 'puppet'
|
13
12
|
FORGE_TYPE_ARTIFACTORY = 'artifactory'
|
@@ -15,18 +14,17 @@ module Blacksmith
|
|
15
14
|
DEFAULT_CREDENTIALS = { 'url' => PUPPETLABS_FORGE, 'forge_type' => FORGE_TYPE_PUPPET }
|
16
15
|
HEADERS = { 'User-Agent' => "Blacksmith/#{Blacksmith::VERSION} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE}; #{RUBY_PLATFORM})" }
|
17
16
|
|
18
|
-
attr_accessor :username, :password, :url, :
|
17
|
+
attr_accessor :username, :password, :url, :forge_type, :token, :api_key
|
19
18
|
|
20
19
|
def initialize(username = nil, password = nil, url = nil, forge_type = nil, token = nil, api_key = nil)
|
21
20
|
self.username = username
|
22
21
|
self.password = password
|
23
22
|
self.token = token
|
24
23
|
self.api_key = api_key
|
25
|
-
RestClient.proxy = ENV
|
24
|
+
RestClient.proxy = ENV.fetch('http_proxy', nil)
|
26
25
|
load_credentials
|
27
|
-
load_client_credentials_from_file
|
28
26
|
self.url = url unless url.nil?
|
29
|
-
if
|
27
|
+
if %r{http(s)?://forge.puppetlabs.com}.match?(self.url)
|
30
28
|
puts "Ignoring url entry in .puppetforge.yml: must point to the api server at #{PUPPETLABS_FORGE}, not the Forge webpage"
|
31
29
|
self.url = PUPPETLABS_FORGE
|
32
30
|
end
|
@@ -39,12 +37,13 @@ module Blacksmith
|
|
39
37
|
unless package
|
40
38
|
v = version ? Regexp.escape(version) : '.*'
|
41
39
|
regex = /^#{user}-#{name}-#{v}\.tar\.gz$/
|
42
|
-
pkg = File.expand_path(
|
43
|
-
f = Dir.new(pkg).select{|fn| fn.match(regex)}.last
|
40
|
+
pkg = File.expand_path('pkg')
|
41
|
+
f = Dir.new(pkg).select { |fn| fn.match(regex) }.last
|
44
42
|
raise Errno::ENOENT, "File not found in #{pkg} with regex #{regex}" if f.nil?
|
43
|
+
|
45
44
|
package = File.join(pkg, f)
|
46
45
|
end
|
47
|
-
raise Errno::ENOENT, "File does not exist: #{package}" unless File.
|
46
|
+
raise Errno::ENOENT, "File does not exist: #{package}" unless File.exist?(package)
|
48
47
|
|
49
48
|
upload(user, name, package)
|
50
49
|
end
|
@@ -55,9 +54,9 @@ module Blacksmith
|
|
55
54
|
url = http_url(author, name, file)
|
56
55
|
case forge_type
|
57
56
|
when FORGE_TYPE_ARTIFACTORY
|
58
|
-
RestClient::Request.execute(:
|
57
|
+
RestClient::Request.execute(method: :put, url: url, payload: File.new(file, 'rb'), headers: http_headers)
|
59
58
|
else
|
60
|
-
RestClient::Request.execute(:
|
59
|
+
RestClient::Request.execute(method: :post, url: url, payload: { file: File.new(file, 'rb') }, headers: http_headers)
|
61
60
|
end
|
62
61
|
rescue RestClient::Exception => e
|
63
62
|
raise Blacksmith::Error, "Error uploading #{name} to the forge #{url} [#{e.message}]: #{e.response}"
|
@@ -68,7 +67,7 @@ module Blacksmith
|
|
68
67
|
when FORGE_TYPE_ARTIFACTORY
|
69
68
|
"#{url}/#{author}/#{name}/#{File.basename(file)}"
|
70
69
|
else
|
71
|
-
"#{url}/
|
70
|
+
"#{url}/v3/releases"
|
72
71
|
end
|
73
72
|
end
|
74
73
|
|
@@ -76,31 +75,15 @@ module Blacksmith
|
|
76
75
|
case forge_type
|
77
76
|
when FORGE_TYPE_ARTIFACTORY
|
78
77
|
if api_key
|
79
|
-
HEADERS.merge({'X-JFrog-Art-Api' => api_key})
|
78
|
+
HEADERS.merge({ 'X-JFrog-Art-Api' => api_key })
|
80
79
|
elsif token
|
81
|
-
HEADERS.merge({'Authorization' => "Bearer #{token}"})
|
80
|
+
HEADERS.merge({ 'Authorization' => "Bearer #{token}" })
|
82
81
|
else
|
83
|
-
HEADERS.merge({'Authorization' =>
|
82
|
+
HEADERS.merge({ 'Authorization' => 'Basic ' + Base64.strict_encode64("#{username}:#{password}") })
|
84
83
|
end
|
85
84
|
else
|
86
|
-
HEADERS.merge({'Authorization' => "Bearer #{api_key || token
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def oauth_access_token
|
91
|
-
begin
|
92
|
-
response = RestClient.post("#{url}/oauth/token", {
|
93
|
-
'client_id' => client_id,
|
94
|
-
'client_secret' => client_secret,
|
95
|
-
'username' => username,
|
96
|
-
'password' => password,
|
97
|
-
'grant_type' => 'password'
|
98
|
-
}, HEADERS)
|
99
|
-
rescue RestClient::Exception => e
|
100
|
-
raise Blacksmith::Error, "Error login to the forge #{url} as #{username} [#{e.message}]: #{e.response}"
|
85
|
+
HEADERS.merge({ 'Authorization' => "Bearer #{api_key || token}" })
|
101
86
|
end
|
102
|
-
login_data = JSON.parse(response)
|
103
|
-
login_data['access_token']
|
104
87
|
end
|
105
88
|
|
106
89
|
def load_credentials
|
@@ -122,83 +105,56 @@ module Blacksmith
|
|
122
105
|
self.url = credentials['url'] if credentials['url']
|
123
106
|
self.forge_type = credentials['forge_type'] if credentials['forge_type']
|
124
107
|
|
125
|
-
unless (
|
126
|
-
raise Blacksmith::Error,
|
127
|
-
Could not find Puppet Forge credentials!
|
108
|
+
unless (username && password) || token || api_key
|
109
|
+
raise Blacksmith::Error, <<~EOS
|
110
|
+
Could not find Puppet Forge credentials!
|
128
111
|
|
129
|
-
Please set the environment variables
|
130
|
-
BLACKSMITH_FORGE_URL
|
131
|
-
BLACKSMITH_FORGE_TYPE
|
132
|
-
BLACKSMITH_FORGE_USERNAME
|
133
|
-
BLACKSMITH_FORGE_PASSWORD
|
134
|
-
BLACKSMITH_FORGE_TOKEN
|
135
|
-
BLACKSMITH_FORGE_API_KEY
|
112
|
+
Please set the environment variables
|
113
|
+
BLACKSMITH_FORGE_URL
|
114
|
+
BLACKSMITH_FORGE_TYPE
|
115
|
+
BLACKSMITH_FORGE_USERNAME
|
116
|
+
BLACKSMITH_FORGE_PASSWORD
|
117
|
+
BLACKSMITH_FORGE_TOKEN
|
118
|
+
BLACKSMITH_FORGE_API_KEY
|
136
119
|
|
137
|
-
or create the file '#{CREDENTIALS_FILE_PROJECT}' or '#{CREDENTIALS_FILE_HOME}'
|
138
|
-
with content similiar to:
|
120
|
+
or create the file '#{CREDENTIALS_FILE_PROJECT}' or '#{CREDENTIALS_FILE_HOME}'
|
121
|
+
with content similiar to:
|
139
122
|
|
140
|
-
---
|
141
|
-
url: https://forgeapi.puppetlabs.com
|
142
|
-
username: myuser
|
143
|
-
password: mypassword
|
123
|
+
---
|
124
|
+
url: https://forgeapi.puppetlabs.com
|
125
|
+
username: myuser
|
126
|
+
password: mypassword
|
144
127
|
|
145
|
-
|
128
|
+
EOS
|
146
129
|
end
|
147
130
|
end
|
148
131
|
|
149
132
|
def load_credentials_from_file
|
150
|
-
credentials_file = [
|
151
|
-
File.join(Dir.pwd, CREDENTIALS_FILE_PROJECT),
|
152
|
-
File.expand_path(CREDENTIALS_FILE_HOME)
|
153
|
-
]
|
154
|
-
.select { |file| File.exists?(file) }
|
155
|
-
.first
|
133
|
+
credentials_file = [File.join(Dir.pwd, CREDENTIALS_FILE_PROJECT), File.expand_path(CREDENTIALS_FILE_HOME)].select { |file| File.exist?(file) }.first
|
156
134
|
|
157
135
|
if credentials_file
|
158
|
-
|
136
|
+
YAML.load_file(credentials_file)
|
159
137
|
else
|
160
|
-
|
138
|
+
{}
|
161
139
|
end
|
162
|
-
|
163
|
-
return credentials
|
164
140
|
end
|
165
141
|
|
166
142
|
def load_credentials_from_env
|
167
|
-
credentials =
|
143
|
+
credentials = {}
|
168
144
|
|
169
|
-
if ENV['BLACKSMITH_FORGE_USERNAME']
|
170
|
-
credentials['username'] = ENV['BLACKSMITH_FORGE_USERNAME']
|
171
|
-
end
|
145
|
+
credentials['username'] = ENV['BLACKSMITH_FORGE_USERNAME'] if ENV['BLACKSMITH_FORGE_USERNAME']
|
172
146
|
|
173
|
-
if ENV['BLACKSMITH_FORGE_PASSWORD']
|
174
|
-
credentials['password'] = ENV['BLACKSMITH_FORGE_PASSWORD']
|
175
|
-
end
|
147
|
+
credentials['password'] = ENV['BLACKSMITH_FORGE_PASSWORD'] if ENV['BLACKSMITH_FORGE_PASSWORD']
|
176
148
|
|
177
|
-
if ENV['BLACKSMITH_FORGE_URL']
|
178
|
-
credentials['url'] = ENV['BLACKSMITH_FORGE_URL']
|
179
|
-
end
|
149
|
+
credentials['url'] = ENV['BLACKSMITH_FORGE_URL'] if ENV['BLACKSMITH_FORGE_URL']
|
180
150
|
|
181
|
-
if ENV['BLACKSMITH_FORGE_TYPE']
|
182
|
-
credentials['forge_type'] = ENV['BLACKSMITH_FORGE_TYPE']
|
183
|
-
end
|
151
|
+
credentials['forge_type'] = ENV['BLACKSMITH_FORGE_TYPE'] if ENV['BLACKSMITH_FORGE_TYPE']
|
184
152
|
|
185
|
-
if ENV['BLACKSMITH_FORGE_TOKEN']
|
186
|
-
credentials['token'] = ENV['BLACKSMITH_FORGE_TOKEN']
|
187
|
-
end
|
153
|
+
credentials['token'] = ENV['BLACKSMITH_FORGE_TOKEN'] if ENV['BLACKSMITH_FORGE_TOKEN']
|
188
154
|
|
189
|
-
if ENV['BLACKSMITH_FORGE_API_KEY']
|
190
|
-
credentials['api_key'] = ENV['BLACKSMITH_FORGE_API_KEY']
|
191
|
-
end
|
155
|
+
credentials['api_key'] = ENV['BLACKSMITH_FORGE_API_KEY'] if ENV['BLACKSMITH_FORGE_API_KEY']
|
192
156
|
|
193
|
-
|
194
|
-
end
|
195
|
-
|
196
|
-
def load_client_credentials_from_file
|
197
|
-
credentials_file = File.expand_path(File.join(__FILE__, "..", "credentials.yml"))
|
198
|
-
credentials = YAML.load_file(credentials_file)
|
199
|
-
self.client_id = credentials['client_id']
|
200
|
-
self.client_secret = credentials['client_secret']
|
157
|
+
credentials
|
201
158
|
end
|
202
159
|
end
|
203
|
-
|
204
160
|
end
|
@@ -2,28 +2,19 @@ require 'open3'
|
|
2
2
|
|
3
3
|
module Blacksmith
|
4
4
|
class Git
|
5
|
-
|
6
|
-
|
7
|
-
attr_writer :tag_pattern, :tag_message_pattern, :tag_sign, :commit_message_pattern
|
5
|
+
attr_accessor :path, :tag_message_pattern, :tag_sign
|
6
|
+
attr_writer :tag_pattern, :commit_message_pattern
|
8
7
|
|
9
8
|
# Pattern to use for tags, %s is replaced with the actual version
|
10
9
|
def commit_message_pattern
|
11
|
-
@commit_message_pattern ||
|
10
|
+
@commit_message_pattern || '[blacksmith] Bump version to %s'
|
12
11
|
end
|
13
12
|
|
14
13
|
def tag_pattern
|
15
14
|
@tag_pattern || 'v%s'
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
19
|
-
@tag_message_pattern
|
20
|
-
end
|
21
|
-
|
22
|
-
def tag_sign
|
23
|
-
@tag_sign
|
24
|
-
end
|
25
|
-
|
26
|
-
def initialize(path = ".")
|
17
|
+
def initialize(path = '.')
|
27
18
|
@path = File.expand_path(path)
|
28
19
|
end
|
29
20
|
|
@@ -38,53 +29,57 @@ module Blacksmith
|
|
38
29
|
|
39
30
|
def tag!(version)
|
40
31
|
tag = tag_pattern % version
|
41
|
-
command = [
|
32
|
+
command = ['tag', tag]
|
42
33
|
if tag_message_pattern
|
43
34
|
tag_message = tag_message_pattern % version
|
44
|
-
command += [
|
35
|
+
command += ['-m', tag_message]
|
45
36
|
end
|
46
37
|
if tag_sign
|
47
38
|
raise Blacksmith::Error, 'Signed tags require messages - set tag_message_pattern' unless tag_message_pattern
|
48
|
-
|
39
|
+
|
40
|
+
command += ['-s']
|
49
41
|
end
|
50
42
|
exec_git command
|
51
43
|
end
|
52
44
|
|
53
45
|
def commit_modulefile!(version)
|
54
|
-
files = Blacksmith::Modulefile::FILES.select {|f| File.
|
46
|
+
files = Blacksmith::Modulefile::FILES.select { |f| File.exist?(File.join(@path, f)) }
|
55
47
|
message = commit_message_pattern % version
|
56
|
-
s = exec_git [
|
57
|
-
s += exec_git [
|
48
|
+
s = exec_git ['add'] + files
|
49
|
+
s += exec_git ['commit', '-m', message]
|
58
50
|
s
|
59
51
|
end
|
60
52
|
|
61
53
|
def push!
|
62
|
-
s = exec_git [
|
63
|
-
s += exec_git [
|
54
|
+
s = exec_git ['push']
|
55
|
+
s += exec_git ['push', '--tags']
|
64
56
|
s
|
65
57
|
end
|
66
58
|
|
67
59
|
private
|
68
60
|
|
69
61
|
def exec_git(cmd)
|
70
|
-
out =
|
71
|
-
err =
|
62
|
+
out = ''
|
63
|
+
err = ''
|
72
64
|
exit_status = nil
|
73
|
-
new_cmd = [
|
65
|
+
new_cmd = ['git', '--git-dir', File.join(@path, '.git'), '--work-tree', @path] + cmd
|
74
66
|
# wait_thr is nil in JRuby < 1.7.5 see http://jira.codehaus.org/browse/JRUBY-6409
|
75
|
-
Open3.popen3(*new_cmd) do |
|
67
|
+
Open3.popen3(*new_cmd) do |_stdin, stdout, stderr, wait_thr|
|
76
68
|
out = stdout.read
|
77
69
|
err = stderr.read
|
78
70
|
exit_status = wait_thr.nil? ? nil : wait_thr.value
|
79
71
|
end
|
80
72
|
if exit_status.nil?
|
81
|
-
|
73
|
+
unless err.empty?
|
74
|
+
raise Blacksmith::Error,
|
75
|
+
"Command #{new_cmd} failed with stderr:\n#{err}#{"\nstdout:\n" + out unless out.empty?}"
|
76
|
+
end
|
82
77
|
elsif !exit_status.success?
|
83
78
|
msg = err.empty? ? out : err
|
84
79
|
msg = "\n#{msg}" unless msg.empty?
|
85
80
|
raise Blacksmith::Error, "Command #{new_cmd} failed with exit status #{exit_status}#{msg}"
|
86
81
|
end
|
87
|
-
|
82
|
+
out
|
88
83
|
end
|
89
84
|
end
|
90
85
|
end
|
@@ -2,31 +2,33 @@ require 'puppet_blacksmith/version_helper'
|
|
2
2
|
|
3
3
|
module Blacksmith
|
4
4
|
class Modulefile
|
5
|
-
|
6
|
-
FILES = ["metadata.json"]
|
5
|
+
FILES = ['metadata.json']
|
7
6
|
|
8
7
|
attr_reader :path
|
9
8
|
|
10
9
|
def initialize(path = nil)
|
11
|
-
@path = path.nil? ? FILES.find {|f| File.
|
10
|
+
@path = path.nil? ? FILES.find { |f| File.exist? f } : path
|
12
11
|
raise Blacksmith::Error, "Unable to find any of #{FILES}" unless @path
|
13
12
|
end
|
14
13
|
|
15
14
|
def metadata
|
16
|
-
@metadata
|
15
|
+
@metadata ||= JSON.parse(File.read(path))
|
17
16
|
@metadata
|
18
17
|
end
|
19
18
|
|
20
19
|
# name in metadata.json is author-modulename
|
21
20
|
def name
|
22
|
-
metadata['name'].split('-',2)[1]
|
21
|
+
metadata['name'].split('-', 2)[1]
|
23
22
|
end
|
23
|
+
|
24
24
|
def namespace
|
25
|
-
metadata['name'].split('-',2)[0]
|
25
|
+
metadata['name'].split('-', 2)[0]
|
26
26
|
end
|
27
|
+
|
27
28
|
def author
|
28
29
|
metadata['author'] || namespace
|
29
30
|
end
|
31
|
+
|
30
32
|
def version
|
31
33
|
metadata['version']
|
32
34
|
end
|
@@ -34,7 +36,7 @@ module Blacksmith
|
|
34
36
|
def bump_to_version!(new_version)
|
35
37
|
text = File.read(path)
|
36
38
|
text = replace_version(text, new_version)
|
37
|
-
File.open(path,
|
39
|
+
File.open(path, 'w') { |file| file.puts text }
|
38
40
|
new_version
|
39
41
|
end
|
40
42
|
|
@@ -43,14 +45,14 @@ module Blacksmith
|
|
43
45
|
bump_to_version!(new_version)
|
44
46
|
end
|
45
47
|
|
46
|
-
[
|
48
|
+
%i[major minor patch full].each do |level|
|
47
49
|
define_method("bump_#{level}!") { bump!(level) }
|
48
50
|
end
|
49
51
|
|
50
52
|
def bump_dep!(module_name, version)
|
51
53
|
text = File.read(path)
|
52
54
|
text = replace_dependency_version(text, module_name, version)
|
53
|
-
File.open(path,
|
55
|
+
File.open(path, 'w') { |file| file.puts text }
|
54
56
|
end
|
55
57
|
|
56
58
|
def replace_version(text, version)
|
@@ -65,7 +67,7 @@ module Blacksmith
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def replace_dependency_version(text, module_name, version)
|
68
|
-
module_name = module_name.sub(
|
70
|
+
module_name = module_name.sub(%r{/}, '-')
|
69
71
|
json = JSON.parse(text)
|
70
72
|
new_dep_list = []
|
71
73
|
json['dependencies'].each do |dep|
|
@@ -4,13 +4,12 @@ require 'puppet_blacksmith'
|
|
4
4
|
|
5
5
|
module Blacksmith
|
6
6
|
class RakeTask < ::Rake::TaskLib
|
7
|
-
|
8
7
|
attr_accessor :tag_pattern, :tag_message_pattern, :tag_sign, :commit_message_pattern, :build
|
9
8
|
|
10
9
|
def initialize(*args, &task_block)
|
11
10
|
@build = true
|
12
|
-
@task_name = args.shift ||
|
13
|
-
@desc = args.shift ||
|
11
|
+
@task_name = args.shift || 'blacksmith'
|
12
|
+
@desc = args.shift || 'Puppet Forge utilities'
|
14
13
|
define(args, &task_block)
|
15
14
|
end
|
16
15
|
|
@@ -25,8 +24,7 @@ module Blacksmith
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def define(args, &task_block)
|
28
|
-
|
29
|
-
task_block.call(*[self, args].slice(0, task_block.arity)) if task_block
|
27
|
+
yield(*[self, args].slice(0, task_block.arity)) if task_block
|
30
28
|
|
31
29
|
# clear any (auto-)pre-existing task
|
32
30
|
[
|
@@ -50,13 +48,12 @@ module Blacksmith
|
|
50
48
|
:push,
|
51
49
|
:clean,
|
52
50
|
:release,
|
53
|
-
:dependency
|
51
|
+
:dependency,
|
54
52
|
].each do |t|
|
55
53
|
Rake::Task.task_defined?("module:#{t}") && Rake::Task["module:#{t}"].clear
|
56
54
|
end
|
57
55
|
|
58
56
|
namespace :module do
|
59
|
-
|
60
57
|
desc 'Build the module using puppet-modulebuilder'
|
61
58
|
task :build do
|
62
59
|
require 'puppet/modulebuilder'
|
@@ -66,7 +63,7 @@ module Blacksmith
|
|
66
63
|
end
|
67
64
|
|
68
65
|
namespace :bump do
|
69
|
-
[
|
66
|
+
%i[major minor patch full].each do |level|
|
70
67
|
desc "Bump module version to the next #{level.upcase} version"
|
71
68
|
task level do
|
72
69
|
m = Blacksmith::Modulefile.new
|
@@ -76,34 +73,34 @@ module Blacksmith
|
|
76
73
|
end
|
77
74
|
end
|
78
75
|
|
79
|
-
desc
|
80
|
-
task :bump_to_version, [:new_version] do |
|
76
|
+
desc 'Bump module to specific version number'
|
77
|
+
task :bump_to_version, [:new_version] do |_t, targs|
|
81
78
|
m = Blacksmith::Modulefile.new
|
82
79
|
m.bump_to_version!(targs[:new_version])
|
83
80
|
puts "Bumping version to #{targs[:new_version]}"
|
84
81
|
end
|
85
82
|
|
86
|
-
desc
|
83
|
+
desc 'Bump module version to the next patch'
|
87
84
|
task :bump do
|
88
85
|
m = Blacksmith::Modulefile.new
|
89
86
|
v = m.bump_patch!
|
90
87
|
puts "Bumping version from #{m.version} to #{v}"
|
91
88
|
end
|
92
89
|
|
93
|
-
desc
|
90
|
+
desc 'Git tag with the current module version'
|
94
91
|
task :tag do
|
95
92
|
m = Blacksmith::Modulefile.new
|
96
93
|
git.tag!(m.version)
|
97
94
|
end
|
98
95
|
|
99
96
|
namespace :version do
|
100
|
-
desc
|
97
|
+
desc 'Get next module version'
|
101
98
|
task :next do
|
102
99
|
m = Blacksmith::Modulefile.new
|
103
100
|
puts m.increase_version(m.version, 'patch')
|
104
101
|
end
|
105
102
|
|
106
|
-
[
|
103
|
+
%i[major minor patch].each do |level|
|
107
104
|
desc "Get the next #{level.upcase} version"
|
108
105
|
task "next:#{level}".to_sym do
|
109
106
|
m = Blacksmith::Modulefile.new
|
@@ -112,14 +109,14 @@ module Blacksmith
|
|
112
109
|
end
|
113
110
|
end
|
114
111
|
|
115
|
-
desc
|
112
|
+
desc 'Get current module version'
|
116
113
|
task :version do
|
117
114
|
m = Blacksmith::Modulefile.new
|
118
115
|
puts m.version
|
119
116
|
end
|
120
117
|
|
121
118
|
namespace :bump_commit do
|
122
|
-
[
|
119
|
+
%i[major minor patch full].each do |level|
|
123
120
|
desc "Bump module version to the next #{level.upcase} version and git commit"
|
124
121
|
task level => "bump:#{level}".to_sym do
|
125
122
|
m = Blacksmith::Modulefile.new
|
@@ -128,25 +125,25 @@ module Blacksmith
|
|
128
125
|
end
|
129
126
|
end
|
130
127
|
|
131
|
-
desc
|
132
|
-
task :
|
128
|
+
desc 'Bump version and git commit'
|
129
|
+
task bump_commit: :bump do
|
133
130
|
m = Blacksmith::Modulefile.new
|
134
131
|
git.commit_modulefile!(m.version)
|
135
132
|
end
|
136
133
|
|
137
|
-
desc
|
138
|
-
task :
|
134
|
+
desc 'Push module to the Puppet Forge'
|
135
|
+
task push: :'module:build' do
|
139
136
|
m = Blacksmith::Modulefile.new
|
140
137
|
forge = Blacksmith::Forge.new
|
141
138
|
puts "Uploading to Puppet Forge #{m.namespace}/#{m.name}"
|
142
139
|
forge.push!(m.name, nil, m.namespace, m.version)
|
143
140
|
end
|
144
141
|
|
145
|
-
desc
|
142
|
+
desc 'Runs clean again'
|
146
143
|
task :clean do
|
147
|
-
puts
|
148
|
-
if Rake::Task
|
149
|
-
Rake::Task[
|
144
|
+
puts 'Cleaning for module build'
|
145
|
+
if Rake::Task.task_defined?(:clean)
|
146
|
+
Rake::Task['clean'].execute
|
150
147
|
else
|
151
148
|
# identical to the clean task in puppetlabs_spec_helper on 2021-07-30
|
152
149
|
# https://github.com/puppetlabs/puppetlabs_spec_helper/blob/24d7b21280a26cc682146839f41dbf1c0793e494/lib/puppetlabs_spec_helper/rake_tasks.rb#L165-L168
|
@@ -155,15 +152,20 @@ module Blacksmith
|
|
155
152
|
end
|
156
153
|
end
|
157
154
|
|
158
|
-
desc
|
159
|
-
release_dependencies = @build
|
160
|
-
|
161
|
-
|
155
|
+
desc 'Release the Puppet module, doing a clean, build, bump_commit, tag, push and git push.'
|
156
|
+
release_dependencies = if @build
|
157
|
+
%i[clean module:build bump_commit tag
|
158
|
+
push]
|
159
|
+
else
|
160
|
+
%i[clean bump_commit tag]
|
161
|
+
end
|
162
|
+
task release: release_dependencies do
|
163
|
+
puts 'Pushing to remote git repo'
|
162
164
|
git.push!
|
163
165
|
end
|
164
166
|
|
165
|
-
desc
|
166
|
-
task :dependency, [:module_name, :version] do |
|
167
|
+
desc 'Set specific module dependency version'
|
168
|
+
task :dependency, [:module_name, :version] do |_t, targs|
|
167
169
|
mn = targs[:module_name]
|
168
170
|
mv = targs[:version]
|
169
171
|
m = Blacksmith::Modulefile.new
|