puppet-blacksmith 3.0.3 → 3.1.0
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 +8 -8
- data/lib/puppet_blacksmith/git.rb +9 -2
- data/lib/puppet_blacksmith/modulefile.rb +24 -0
- data/lib/puppet_blacksmith/rake_tasks.rb +72 -34
- data/lib/puppet_blacksmith/version.rb +1 -1
- data/spec/data/Modulefile +1 -0
- data/spec/data/metadata.json +4 -0
- data/spec/puppet_blacksmith/modulefile_spec.rb +68 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NGJhY2U2NDIxMDJlNTY5Nzk5ODg2ZDNhNmExMDNmMDYzYTkwNjE3Mg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTg0ZGM3NzI0Nzg1MWM3MDlhNWNjZTE4YzBkODU2MDQ4OThiZmI4OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmM2ODBkOTJmZjQ2OWM3YzYyNjk4Y2QzOGIwNDQ3YWNiNTQwNTllY2MyM2I2
|
10
|
+
OTVkN2MxMWExOTkxNTE4YjZkNjJhYWZmNDBjYzQ4NWY1N2FlYjk0ZDkyZjRl
|
11
|
+
NGM2NDcwM2FhZDlhNmI4ZjZhYjA5MTYxMzJhMDJmNTEyOTRmNTI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWEyNTI4MTNiYWQ2NzU1MGFkYmE5ZDA3NzNlZmEyNGQwMzk5OTZhOGUyYmY4
|
14
|
+
ZTQyMWRjYjk0ZDBiNjgzYWFhYWM1ZGJjY2UwMjI4YzZhMjA0N2E0YmI0OTc2
|
15
|
+
OWYxNjM1MTMyMTc5NGM1NzBkZjY5MzU4ZDRhNzA3MDRhN2JmYWQ=
|
@@ -3,14 +3,21 @@ require 'open3'
|
|
3
3
|
module Blacksmith
|
4
4
|
class Git
|
5
5
|
|
6
|
-
attr_accessor :path
|
6
|
+
attr_accessor :path, :tag_pattern
|
7
|
+
attr_writer :tag_pattern
|
8
|
+
|
9
|
+
# Pattern to use for tags, %s is replaced with the actual version
|
10
|
+
def tag_pattern
|
11
|
+
@tag_pattern || 'v%s'
|
12
|
+
end
|
7
13
|
|
8
14
|
def initialize(path = ".")
|
9
15
|
@path = File.expand_path(path)
|
10
16
|
end
|
11
17
|
|
12
18
|
def tag!(version)
|
13
|
-
|
19
|
+
tag = tag_pattern % version
|
20
|
+
exec_git "tag #{tag}"
|
14
21
|
end
|
15
22
|
|
16
23
|
def commit_modulefile!(version)
|
@@ -59,6 +59,12 @@ module Blacksmith
|
|
59
59
|
new_version
|
60
60
|
end
|
61
61
|
|
62
|
+
def bump_dep!(module_name, version)
|
63
|
+
text = File.read(path)
|
64
|
+
text = replace_dependency_version(text, module_name, version)
|
65
|
+
File.open(path, "w") {|file| file.puts text}
|
66
|
+
end
|
67
|
+
|
62
68
|
def replace_version(text, version)
|
63
69
|
if @modulefile
|
64
70
|
text.gsub(/\nversion[ ]+['"].*['"]/, "\nversion '#{version}'")
|
@@ -74,5 +80,23 @@ module Blacksmith
|
|
74
80
|
raise Blacksmith::Error, "Unable to increase prerelease version #{version}" if v.prerelease?
|
75
81
|
v.bump.to_s
|
76
82
|
end
|
83
|
+
|
84
|
+
def replace_dependency_version(text, module_name, version)
|
85
|
+
if @modulefile
|
86
|
+
# example: dependency 'puppetlabs/stdlib', '>= 2.3.0'
|
87
|
+
module_name = module_name.sub(/^([^\/-]+)-/, '\1/')
|
88
|
+
text.gsub(/\ndependency[ ]+['"].*#{module_name}['"],([ ]+['"].*['"]|)/, "\ndependency '#{module_name}', '#{version}'")
|
89
|
+
else
|
90
|
+
module_name = module_name.sub(/\//, '-')
|
91
|
+
json = JSON.parse(text)
|
92
|
+
new_dep_list = []
|
93
|
+
json['dependencies'].each do |dep|
|
94
|
+
dep['version_requirement'] = version if dep['name'] == module_name
|
95
|
+
new_dep_list << dep
|
96
|
+
end
|
97
|
+
json['dependencies'] = new_dep_list
|
98
|
+
JSON.pretty_generate(json)
|
99
|
+
end
|
100
|
+
end
|
77
101
|
end
|
78
102
|
end
|
@@ -1,44 +1,82 @@
|
|
1
1
|
require 'rake'
|
2
|
+
require 'rake/tasklib'
|
2
3
|
require 'puppet_blacksmith'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
task :bump do
|
7
|
-
m = Blacksmith::Modulefile.new
|
8
|
-
v = m.bump!
|
9
|
-
puts "Bumping version from #{m.version} to #{v}"
|
10
|
-
end
|
5
|
+
module Blacksmith
|
6
|
+
class RakeTask < ::Rake::TaskLib
|
11
7
|
|
12
|
-
|
13
|
-
task :tag do
|
14
|
-
m = Blacksmith::Modulefile.new
|
15
|
-
Blacksmith::Git.new.tag!(m.version)
|
16
|
-
end
|
8
|
+
attr_accessor :tag_pattern
|
17
9
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
10
|
+
def initialize(*args, &task_block)
|
11
|
+
@task_name = args.shift || "blacksmith"
|
12
|
+
@desc = args.shift || "Puppet Forge utilities"
|
13
|
+
puts "INIT"
|
14
|
+
define(args, &task_block)
|
15
|
+
end
|
23
16
|
|
24
|
-
|
25
|
-
task :push => :build do
|
26
|
-
m = Blacksmith::Modulefile.new
|
27
|
-
forge = Blacksmith::Forge.new
|
28
|
-
puts "Uploading to Puppet Forge #{forge.username}/#{m.name}"
|
29
|
-
forge.push!(m.name)
|
30
|
-
end
|
17
|
+
def define(args, &task_block)
|
31
18
|
|
32
|
-
|
33
|
-
task :clean do
|
34
|
-
puts "Cleaning for module build"
|
35
|
-
Rake::Task["clean"].execute
|
36
|
-
end
|
19
|
+
task_block.call(*[self, args].slice(0, task_block.arity)) if task_block
|
37
20
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
21
|
+
# clear any (auto-)pre-existing task
|
22
|
+
[:bump, :tag, :bump_commit, :push, :clean, :release, :dependency].each do |t|
|
23
|
+
Rake::Task.task_defined?("module:#{t}") && Rake::Task["module:#{t}"].clear
|
24
|
+
end
|
25
|
+
|
26
|
+
namespace :module do
|
27
|
+
|
28
|
+
desc "Bump module version to the next minor"
|
29
|
+
task :bump do
|
30
|
+
m = Blacksmith::Modulefile.new
|
31
|
+
v = m.bump!
|
32
|
+
puts "Bumping version from #{m.version} to #{v}"
|
33
|
+
end
|
43
34
|
|
35
|
+
desc "Git tag with the current module version"
|
36
|
+
task :tag do
|
37
|
+
m = Blacksmith::Modulefile.new
|
38
|
+
git = Blacksmith::Git.new
|
39
|
+
git.tag_pattern = @tag_pattern
|
40
|
+
git.tag!(m.version)
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Bump version and git commit"
|
44
|
+
task :bump_commit => :bump do
|
45
|
+
m = Blacksmith::Modulefile.new
|
46
|
+
Blacksmith::Git.new.commit_modulefile!(m.version)
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Push module to the Puppet Forge"
|
50
|
+
task :push => :build do
|
51
|
+
m = Blacksmith::Modulefile.new
|
52
|
+
forge = Blacksmith::Forge.new
|
53
|
+
puts "Uploading to Puppet Forge #{forge.username}/#{m.name}"
|
54
|
+
forge.push!(m.name)
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "Runs clean again"
|
58
|
+
task :clean do
|
59
|
+
puts "Cleaning for module build"
|
60
|
+
Rake::Task["clean"].execute
|
61
|
+
end
|
62
|
+
|
63
|
+
desc "Release the Puppet module, doing a clean, build, tag, push, bump_commit and git push."
|
64
|
+
task :release => [:clean, :build, :tag, :push, :bump_commit] do
|
65
|
+
puts "Pushing to remote git repo"
|
66
|
+
Blacksmith::Git.new.push!
|
67
|
+
end
|
68
|
+
|
69
|
+
desc "Set specific module dependency version"
|
70
|
+
task :dependency, [:module_name, :version] do |t, args|
|
71
|
+
mn = args[:module_name]
|
72
|
+
mv = args[:version]
|
73
|
+
m = Blacksmith::Modulefile.new
|
74
|
+
m.bump_dep! mn, mv
|
75
|
+
puts "Updated module dependency #{mn} to #{mv}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
44
80
|
end
|
81
|
+
|
82
|
+
Blacksmith::RakeTask.new
|
data/spec/data/Modulefile
CHANGED
data/spec/data/metadata.json
CHANGED
@@ -49,6 +49,10 @@ describe 'Blacksmith::Modulefile' do
|
|
49
49
|
"description": "Standard Library for Puppet Modules",
|
50
50
|
"project_page": "https://github.com/puppetlabs/puppetlabs-stdlib",
|
51
51
|
"dependencies": [
|
52
|
+
{
|
53
|
+
"name": "puppetlabs-stdlib",
|
54
|
+
"version_requirement": ">= 3.0.0"
|
55
|
+
}
|
52
56
|
]
|
53
57
|
}
|
54
58
|
eos
|
@@ -57,6 +61,52 @@ describe 'Blacksmith::Modulefile' do
|
|
57
61
|
end
|
58
62
|
end
|
59
63
|
|
64
|
+
describe 'replace_dependency_version' do
|
65
|
+
it "should replace the version in metadata" do
|
66
|
+
|
67
|
+
expected = <<-eos
|
68
|
+
{
|
69
|
+
"operatingsystem_support": [
|
70
|
+
{
|
71
|
+
"operatingsystem": "CentOS",
|
72
|
+
"operatingsystemrelease": [
|
73
|
+
"4",
|
74
|
+
"5",
|
75
|
+
"6"
|
76
|
+
]
|
77
|
+
}
|
78
|
+
],
|
79
|
+
"requirements": [
|
80
|
+
{
|
81
|
+
"name": "pe",
|
82
|
+
"version_requirement": "3.2.x"
|
83
|
+
},
|
84
|
+
{
|
85
|
+
"name": "puppet",
|
86
|
+
"version_requirement": ">=2.7.20 <4.0.0"
|
87
|
+
}
|
88
|
+
],
|
89
|
+
"name": "maestrodev-test",
|
90
|
+
"version": "1.0.0",
|
91
|
+
"source": "git://github.com/puppetlabs/puppetlabs-stdlib",
|
92
|
+
"author": "maestrodev",
|
93
|
+
"license": "Apache 2.0",
|
94
|
+
"summary": "Puppet Module Standard Library",
|
95
|
+
"description": "Standard Library for Puppet Modules",
|
96
|
+
"project_page": "https://github.com/puppetlabs/puppetlabs-stdlib",
|
97
|
+
"dependencies": [
|
98
|
+
{
|
99
|
+
"name": "puppetlabs-stdlib",
|
100
|
+
"version_requirement": ">= 4.0.0"
|
101
|
+
}
|
102
|
+
]
|
103
|
+
}
|
104
|
+
eos
|
105
|
+
|
106
|
+
expect(JSON.parse(subject.replace_dependency_version(File.read(path), 'puppetlabs-stdlib', '>= 4.0.0'))).to eql(JSON.parse(expected))
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
60
110
|
end
|
61
111
|
|
62
112
|
context "using a Modulefile" do
|
@@ -76,12 +126,30 @@ project_page 'http://github.com/maestrodev/puppet-blacksmith'
|
|
76
126
|
source 'http://github.com/maestrodev/puppet-blacksmith'
|
77
127
|
summary 'Testing Puppet module operations'
|
78
128
|
description 'Testing Puppet module operations'
|
129
|
+
dependency 'puppetlabs/stdlib', '>= 3.0.0'
|
79
130
|
eos
|
80
131
|
|
81
132
|
expect(subject.replace_version(File.read(path), "1.0.1")).to eql(expected)
|
82
133
|
end
|
83
134
|
end
|
84
135
|
|
136
|
+
describe 'replace_dependency_version' do
|
137
|
+
it "should replace the dependency version in a Modulefile" do
|
138
|
+
expected = <<-eos
|
139
|
+
name 'maestrodev-test'
|
140
|
+
version '1.0.0'
|
141
|
+
|
142
|
+
license 'Apache License, Version 2.0'
|
143
|
+
project_page 'http://github.com/maestrodev/puppet-blacksmith'
|
144
|
+
source 'http://github.com/maestrodev/puppet-blacksmith'
|
145
|
+
summary 'Testing Puppet module operations'
|
146
|
+
description 'Testing Puppet module operations'
|
147
|
+
dependency 'puppetlabs/stdlib', '>= 4.0.0'
|
148
|
+
eos
|
149
|
+
|
150
|
+
expect(subject.replace_dependency_version(File.read(path), 'puppetlabs-stdlib', '>= 4.0.0')).to eql(expected)
|
151
|
+
end
|
152
|
+
end
|
85
153
|
end
|
86
154
|
|
87
155
|
describe 'increase_version' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-blacksmith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MaestroDev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -172,13 +172,13 @@ signing_key:
|
|
172
172
|
specification_version: 4
|
173
173
|
summary: Tasks to manage Puppet module builds
|
174
174
|
test_files:
|
175
|
-
- spec/spec_helper.rb
|
176
175
|
- spec/data/metadata.json
|
177
176
|
- spec/data/response.json
|
178
177
|
- spec/data/Modulefile
|
179
178
|
- spec/data/maestrodev-test/metadata.json
|
180
|
-
- spec/puppet_blacksmith/forge_spec.rb
|
181
|
-
- spec/puppet_blacksmith/forge_shared.rb
|
182
|
-
- spec/puppet_blacksmith/forge_live_spec.rb
|
183
179
|
- spec/puppet_blacksmith/modulefile_spec.rb
|
184
180
|
- spec/puppet_blacksmith/git_spec.rb
|
181
|
+
- spec/puppet_blacksmith/forge_shared.rb
|
182
|
+
- spec/puppet_blacksmith/forge_spec.rb
|
183
|
+
- spec/puppet_blacksmith/forge_live_spec.rb
|
184
|
+
- spec/spec_helper.rb
|