puppet-blacksmith 1.0.5 → 2.0.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.
@@ -0,0 +1,4 @@
1
+ module Blacksmith
2
+ class Error < RuntimeError
3
+ end
4
+ end
@@ -0,0 +1,92 @@
1
+ require 'rest-client'
2
+ require 'nokogiri'
3
+
4
+ module Blacksmith
5
+ class Forge
6
+
7
+ PUPPETLABS_FORGE = "https://forge.puppetlabs.com"
8
+
9
+ attr_accessor :username, :password
10
+ attr_writer :url
11
+
12
+ def initialize(username = nil, password = nil, url = nil)
13
+ self.username = username
14
+ self.password = password
15
+ self.url = url
16
+ RestClient.proxy = ENV['http_proxy']
17
+ load_credentials_from_file if username.nil?
18
+ end
19
+
20
+ def url
21
+ @url || PUPPETLABS_FORGE
22
+ end
23
+
24
+ def push!(name, package = nil)
25
+ unless package
26
+ regex = /^#{username}-#{name}-.*\.tar\.gz$/
27
+ pkg = File.expand_path("pkg")
28
+ f = Dir.new(pkg).select{|f| f.match(regex)}.last
29
+ raise Errno::ENOENT, "File not found in #{pkg} with regex #{regex}" if f.nil?
30
+ package = File.join(pkg, f)
31
+ end
32
+ raise Errno::ENOENT, "File does not exist: #{package}" unless File.exists?(package)
33
+
34
+ # login to the puppet forge
35
+ response = RestClient.post(
36
+ "#{url}/login",
37
+ {'username' => username, 'password' => password}){
38
+ |response, request, result, &block|
39
+ if [301, 302, 307].include? response.code
40
+ response # no need to follow redirects
41
+ else
42
+ response.return!(request, result, &block)
43
+ end
44
+ }
45
+ raise Blacksmith::Error, "Failed to login to Puppet Forge: cookies not set correctly" unless response.cookies['auth']
46
+
47
+ page = Nokogiri::HTML(response.body)
48
+ errors = page.css('.failure')
49
+ raise Blacksmith::Error, "Error uploading module #{package} to Puppet Forge #{username}/#{name}:#{errors.text}" unless errors.empty?
50
+
51
+ # upload the file
52
+ response = RestClient.post("#{url}/#{username}/#{name}/upload",
53
+ {:tarball => File.new(package, 'rb')},
54
+ {:cookies => response.cookies}){
55
+ |response, request, result, &block|
56
+ if [301, 302, 307].include? response.code
57
+ response # no need to follow redirects
58
+ else
59
+ response.return!(request, result, &block)
60
+ end
61
+ }
62
+ page = Nokogiri::HTML(response.body)
63
+ errors = page.css('.errors')
64
+ raise Blacksmith::Error, "Error uploading module #{package} to Puppet Forge #{username}/#{name}:#{errors.text}" unless errors.empty?
65
+ end
66
+
67
+ private
68
+
69
+ def load_credentials_from_file
70
+ credentials_file = File.expand_path("~/.puppetforge.yml")
71
+ unless File.exists?(credentials_file)
72
+ raise Blacksmith::Error, <<-eos
73
+ Could not find Puppet Forge credentials file '#{credentials_file}'
74
+ Please create it
75
+ ---
76
+ forge: https://forge.puppetlabs.com
77
+ username: myuser
78
+ password: mypassword
79
+ eos
80
+ end
81
+ credentials = YAML.load_file(credentials_file)
82
+ self.username = credentials['username']
83
+ self.password = credentials['password']
84
+ if credentials['forge']
85
+ # deprecated
86
+ puts "'forge' entry is deprecated in .puppetforge.yml, use 'url'"
87
+ self.url = credentials['forge']
88
+ end
89
+ self.url = credentials['url'] if credentials['url']
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,43 @@
1
+ require 'open3'
2
+
3
+ module Blacksmith
4
+ class Git
5
+
6
+ attr_accessor :path
7
+
8
+ def initialize(path = ".")
9
+ @path = File.expand_path(path)
10
+ end
11
+
12
+ def tag!(version)
13
+ exec_git "tag v#{version}"
14
+ end
15
+
16
+ def commit_modulefile!
17
+ s = exec_git "add Modulefile"
18
+ s += exec_git "commit -m '[blacksmith] Bump version'"
19
+ s
20
+ end
21
+
22
+ def push!
23
+ s = exec_git "push"
24
+ s += exec_git "push --tags"
25
+ s
26
+ end
27
+
28
+ def exec_git(cmd)
29
+ out = ""
30
+ err = ""
31
+ # wait_thr is nil in JRuby < 1.7.5 see http://jira.codehaus.org/browse/JRUBY-6409
32
+ new_cmd = "git --git-dir=#{File.join(path, '.git')} --work-tree=#{path} #{cmd}"
33
+ Open3.popen3(new_cmd) do |stdin, stdout, stderr, wait_thr|
34
+ out = stdout.read
35
+ err = stderr.read
36
+ # exit_status = wait_thr.value
37
+ end
38
+ exit_status = $?
39
+ raise Blacksmith::Error, err unless exit_status.success?
40
+ return out
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,46 @@
1
+ require 'puppet'
2
+
3
+ module Blacksmith
4
+ class Modulefile
5
+
6
+ attr_reader :path
7
+
8
+ def initialize(path = "Modulefile")
9
+ @path = path
10
+ end
11
+
12
+ def metadata
13
+ unless @metadata
14
+ metadata = Puppet::ModuleTool::Metadata.new
15
+ Puppet::ModuleTool::ModulefileReader.evaluate(metadata, path)
16
+ @metadata = metadata
17
+ end
18
+ @metadata
19
+ end
20
+
21
+ def name
22
+ metadata.name
23
+ end
24
+ def version
25
+ metadata.version
26
+ end
27
+
28
+ def bump!
29
+ new_version = increase_version(version)
30
+ text = File.read(path)
31
+ text = replace_version(text, new_version)
32
+ File.open(path, "w") {|file| file.puts text}
33
+ new_version
34
+ end
35
+
36
+ def replace_version(text, version)
37
+ text.gsub(/\nversion[ ]+['"].*['"]/, "\nversion '#{version}'")
38
+ end
39
+
40
+ def increase_version(version)
41
+ v = Gem::Version.new("#{version}.0")
42
+ raise Blacksmith::Error, "Unable to increase prerelease version #{version}" if v.prerelease?
43
+ v.bump.to_s
44
+ end
45
+ end
46
+ end
@@ -1,28 +1,31 @@
1
1
  require 'rake'
2
- require 'rest-client'
3
- require 'puppet'
4
- require 'yaml'
5
- require 'nokogiri'
2
+ require_relative '../puppet_blacksmith'
6
3
 
7
4
  namespace :module do
8
5
  desc "Bump module version to the next minor"
9
6
  task :bump do
10
- bump
7
+ m = Blacksmith::Modulefile.new
8
+ v = m.bump!
9
+ puts "Bumping version from #{m.version} to #{v}"
11
10
  end
12
11
 
13
12
  desc "Git tag with the current module version"
14
13
  task :tag do
15
- tag
14
+ m = Blacksmith::Modulefile.new
15
+ Blacksmith::Git.new.tag!(m.version)
16
16
  end
17
17
 
18
18
  desc "Bump version and git commit"
19
19
  task :bump_commit => :bump do
20
- bump_commit
20
+ Blacksmith::Git.new.commit_modulefile!
21
21
  end
22
22
 
23
23
  desc "Push module to the Puppet Forge"
24
24
  task :push => :build do
25
- push
25
+ m = Blacksmith::Modulefile.new
26
+ forge = Blacksmith::Forge.new
27
+ puts "Uploading to Puppet Forge #{forge.username}/#{m.name}"
28
+ forge.push!(m.name)
26
29
  end
27
30
 
28
31
  desc "Runs clean again"
@@ -33,104 +36,8 @@ namespace :module do
33
36
 
34
37
  desc "Release the Puppet module, doing a clean, build, tag, push, bump_commit and git push."
35
38
  task :release => [:clean, :build, :tag, :push, :bump_commit] do
36
- puts "Pushing commits to remote git repo"
37
- sh "git push"
38
- puts "Pushing tags to remote git repo"
39
- sh "git push --tags"
39
+ puts "Pushing to remote git repo"
40
+ Blacksmith::Git.new.push!
40
41
  end
41
- end
42
-
43
-
44
- # task methods for reuse
45
-
46
- def bump
47
- m = modulefile()
48
- text = File.read("Modulefile")
49
- v = increase_version(m.version)
50
- puts "Bumping version from #{m.version} to #{v}"
51
- text = replace_version(text, v)
52
- File.open("Modulefile", "w") {|file| file.puts text}
53
- end
54
-
55
- def tag
56
- m = modulefile()
57
- sh "git tag v#{m.version}"
58
- end
59
-
60
- def bump_commit
61
- sh "git add Modulefile"
62
- sh "git commit -m 'Bump version'"
63
- end
64
-
65
- def bump_commit_push
66
- sh "git add Modulefile"
67
- sh "git commit -m 'Bump version'"
68
- end
69
-
70
- def push
71
- RestClient.proxy = ENV['http_proxy']
72
- credentials_file = File.expand_path("~/.puppetforge.yml")
73
- unless File.exists?(credentials_file)
74
- fail(<<-eos)
75
- Could not find Puppet Forge credentials file '#{credentials_file}'
76
- Please create it
77
- ---
78
- forge: https://forge.puppetlabs.com
79
- username: myuser
80
- password: mypassword
81
- eos
82
- end
83
- credentials = YAML.load_file(credentials_file)
84
- m = modulefile("Modulefile")
85
- forge = credentials['forge'] || "https://forge.puppetlabs.com"
86
-
87
- # login to the puppet forge
88
- puts "Logging into Puppet Forge as user #{credentials['username']}"
89
- response = RestClient.post(
90
- "#{forge}/login",
91
- {'username' => credentials['username'], 'password' => credentials['password']}){
92
- |response, request, result, &block|
93
- if [301, 302, 307].include? response.code
94
- response
95
- else
96
- response.return!(request, result, &block)
97
- end
98
- }
99
- fail("Failed to login to Puppet Forge: cookies not set correctly") unless response.cookies['auth']
100
-
101
- # upload the file
102
- package = "pkg/#{m.username}-#{m.name}-#{m.version}.tar.gz"
103
- puts "Uploading #{package} to Puppet Forge #{m.username}/#{m.name}"
104
- response = RestClient.post("#{forge}/#{m.username}/#{m.name}/upload",
105
- {:tarball => File.new(package, 'rb')},
106
- {:cookies => response.cookies}){
107
- |response, request, result, &block|
108
- if [301, 302, 307].include? response.code
109
- response
110
- else
111
- response.return!(request, result, &block)
112
- end
113
- }
114
- page = Nokogiri::HTML(response.body)
115
- errors = page.css('.errors')
116
- fail("Error uploading module #{package} to Puppet Forge #{m.username}/#{m.name}:#{errors.text}") unless errors.empty?
117
- end
118
-
119
-
120
- # util
121
-
122
- def replace_version(text, version)
123
- text.gsub(/\nversion[ ]+['"].*['"]/, "\nversion '#{version}'")
124
- end
125
-
126
- def increase_version(version)
127
- v = Gem::Version.new("#{version}.0")
128
- raise "Unable to increase prerelease version #{version}" if v.prerelease?
129
- v.bump.to_s
130
- end
131
42
 
132
- def modulefile(path = "Modulefile")
133
- metadata = Puppet::ModuleTool::Metadata.new
134
- Puppet::ModuleTool::ModulefileReader.evaluate(metadata, path)
135
- metadata
136
43
  end
@@ -0,0 +1,3 @@
1
+ module Blacksmith
2
+ VERSION = '2.0.0'
3
+ end
@@ -0,0 +1,4 @@
1
+ require_relative 'puppet_blacksmith/error'
2
+ require_relative 'puppet_blacksmith/forge'
3
+ require_relative 'puppet_blacksmith/git'
4
+ require_relative 'puppet_blacksmith/modulefile'
@@ -0,0 +1,230 @@
1
+ <!DOCTYPE html>
2
+ <html dir="ltr" lang="en-US">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <title>Puppet Forge</title>
6
+ <link rel="stylesheet" href="/styles/application.css" />
7
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
8
+ <script src="/scripts/modernizr.js"></script>
9
+
10
+ <script src="//munchkin.marketo.net/munchkin.js" type="text/javascript"></script>
11
+
12
+ <script src="/scripts/leadcapture.js"></script>
13
+
14
+ <script type="text/javascript">
15
+ mktoMunchkin("307-QLA-991");
16
+
17
+ var _gaq = _gaq || [];
18
+ _gaq.push(['_setAccount', 'UA-1537572-5']);
19
+ _gaq.push(['_trackPageview']);
20
+ (function() {
21
+ var ga = document.createElement('script');
22
+ ga.type = 'text/javascript';
23
+ ga.async = true;
24
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
25
+ var s = document.getElementsByTagName('script')[0];
26
+ s.parentNode.insertBefore(ga, s);
27
+ })();
28
+
29
+ var _gauges = _gauges || [];
30
+ (function() {
31
+ var t = document.createElement('script');
32
+ t.type = 'text/javascript';
33
+ t.async = true;
34
+ t.id = 'gauges-tracker';
35
+ t.setAttribute('data-site-id', '50a02411613f5d682f0000c1');
36
+ t.src = '//secure.gaug.es/track.js';
37
+ var s = document.getElementsByTagName('script')[0];
38
+ s.parentNode.insertBefore(t, s);
39
+ })();
40
+ </script>
41
+ </head>
42
+ <body>
43
+ <section id="masthead">
44
+ <div class="site-width">
45
+ <ul>
46
+ <li class="colon-after"><a href="http://www.puppetlabs.com">Puppet Labs</a></li>
47
+ <li><a href="http://puppetlabs.com/puppet/puppet-open-source/">Open Source Projects</a></li>
48
+ <li><a href="http://puppetlabs.com/services/customer-support/">Support</a></li>
49
+ <li><a href="http://docs.puppetlabs.com/">Docs</a></li>
50
+ <li><a href="http://projects.puppetlabs.com/">Bugs</a></li>
51
+ </ul>
52
+ </div>
53
+ </section>
54
+ <section id="header">
55
+ <div class="site-width clearfix">
56
+ <a href="/">
57
+ <img src="/images/forge-logo.png" class="logo" width="214px" height="50px" alt="Puppet Forge Home">
58
+ </a>
59
+
60
+ <div class="stats">
61
+ <span class="first">
62
+ <span class="big">1,369</span> modules
63
+ </span>
64
+ <span>
65
+ <span class="big">1,193,444</span> downloads
66
+ </span>
67
+ </div>
68
+ </div>
69
+ </section>
70
+ <section id="content">
71
+ <div class="site-width clearfix">
72
+ <section id="body">
73
+ <h2>Upload a Release of maestrodev/test</h2>
74
+ <div class="errors">
75
+ <ul>
76
+ <li>Internal server error</li>
77
+ </ul>
78
+ </div>
79
+
80
+ <form action="/maestrodev/test/upload" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
81
+ <input type="hidden" name="utf-8" value="&#x2713;" />
82
+ <ul class="form">
83
+ <li class="requiredFieldText">Required fields <span>*</span></li>
84
+
85
+ <li>
86
+ <label for="tarball" class="required">Tarball</label>
87
+ <p>
88
+ The version number for this release will be determined from the metadata.json file in the uploaded tarball.
89
+
90
+ </p>
91
+ <input name="tarball" type="file" required />
92
+ </li>
93
+
94
+ <li>
95
+ <input type="submit" value="Upload Release" />
96
+ <a href="/maestrodev/test">Cancel</a>
97
+ </li>
98
+ </ul>
99
+ </form>
100
+
101
+ </section>
102
+ <section id="sidebar">
103
+ <section class="session">
104
+ <table>
105
+ <tr>
106
+ <td>
107
+ <img class="avatar" alt="avatar" src="//gravatar.com/avatar/192d33f0c408b08b3df9d4927bfbcdc0.png?r=PG&amp;s=45" /></td>
108
+ <td>
109
+ <a class="profile-edit" href="/users/maestrodev/edit">MaestroDev</a>
110
+ <a href="/logout">Sign Out</a>
111
+ </td>
112
+ </tr>
113
+ </table>
114
+
115
+ <ul>
116
+ <li><a href="/maestrodev">Your Modules</a></li>
117
+ <li><a href="/modules/new">Publish a Module</a></li>
118
+ </ul>
119
+ </section>
120
+
121
+ <section class="search">
122
+ <h3>Find Modules</h3>
123
+ <form action="/modules" method="get" accept-charset="UTF-8">
124
+ <input type="hidden" name="utf-8" value="&#x2713;" />
125
+ <input type="hidden" name="sort" value="rank" />
126
+ <input type="search" name="q" required placeholder="eg. apache, mysql" />
127
+ <input type="submit" value="Find" />
128
+ </form>
129
+ </section>
130
+
131
+ <section class="tags">
132
+ <h3>Popular Tags</h3>
133
+ <ul>
134
+ <li>
135
+ <a href="/tags/ubuntu">
136
+ <b>ubuntu</b> (248 modules)
137
+ </a>
138
+ </li>
139
+ <li>
140
+ <a href="/tags/debian">
141
+ <b>debian</b> (197 modules)
142
+ </a>
143
+ </li>
144
+ <li>
145
+ <a href="/tags/rhel">
146
+ <b>rhel</b> (145 modules)
147
+ </a>
148
+ </li>
149
+ <li>
150
+ <a href="/tags/CentOS">
151
+ <b>CentOS</b> (114 modules)
152
+ </a>
153
+ </li>
154
+ <li>
155
+ <a href="/tags/centos">
156
+ <b>centos</b> (95 modules)
157
+ </a>
158
+ </li>
159
+ <li>
160
+ <a href="/tags/monitoring">
161
+ <b>monitoring</b> (77 modules)
162
+ </a>
163
+ </li>
164
+ <li>
165
+ <a href="/tags/networking">
166
+ <b>networking</b> (73 modules)
167
+ </a>
168
+ </li>
169
+ <li>
170
+ <a href="/tags/redhat">
171
+ <b>redhat</b> (68 modules)
172
+ </a>
173
+ </li>
174
+ <li>
175
+ <a href="/tags/security">
176
+ <b>security</b> (62 modules)
177
+ </a>
178
+ </li>
179
+ <li>
180
+ <a href="/tags/applications">
181
+ <b>applications</b> (61 modules)
182
+ </a>
183
+ </li>
184
+ </ul>
185
+ </section>
186
+
187
+ <section class="banner">
188
+ <a href="http://puppetconf.com/register/"><img src="/images/puppetconf_v1-01.png"></a>
189
+ </section> </section>
190
+ </div>
191
+ </section>
192
+ <section id="footer">
193
+ <div class="site-width">
194
+ <div id="footer-links">
195
+ <ul>
196
+ <li><strong>Community</strong></li>
197
+ <li><a href="http://webchat.freenode.net/?channels=puppet">IRC</a></li>
198
+ <li><a href="http://groups.google.com/group/puppet-dev">Puppet Developer List</a></li>
199
+ <li><a href="http://groups.google.com/group/puppet-users?pli=1">Puppet User List</a></li>
200
+ <li><a href="http://www.linkedin.com/groups?about=&gid=696467&trk=anet_ug_grppro">Puppet Users' LinkedIn Group</a></li>
201
+ <li><a href="http://puppetlabs.com/resources/newsletter/">Subscribe to Newsletter</a></li>
202
+ </ul>
203
+ </div>
204
+ <div id="footer-bottom" class="clearfix">
205
+ <div class="vcard">
206
+ &copy; 2009-2012
207
+ <span class="org">
208
+ <a href="http://puppetlabs.com/" title="Puppet Labs">
209
+ Puppet Labs
210
+ </a>
211
+ </span>
212
+ <a class="email" href="mailto:info@puppetlabs.com">info@puppetlabs.com</a>
213
+ <span class="adr">
214
+ <span class="street-address">926 NW 13th Ave., Suite 210</span>
215
+ /
216
+ <span class="locality">Portland</span>
217
+ ,
218
+ <span class="region">OR</span>
219
+ <span class="postal-code">97209</span>
220
+
221
+ </span>
222
+ <span class="tel">+1 503-805-9065</span>
223
+ </div>
224
+ <div class="new-relic-logo">Monitored by <a href="http://newrelic.com/"><img src="/images/new-relic-oval.png"></a>
225
+ </div>
226
+ </div>
227
+ </div>
228
+ </section>
229
+ </body>
230
+ </html>
File without changes
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'fileutils'
3
+
4
+ describe 'Blacksmith::Forge' do
5
+
6
+ subject { Blacksmith::Forge.new(username, password, forge) }
7
+ let(:username) { 'johndoe' }
8
+ let(:password) { 'secret' }
9
+ let(:forge) { "https://forge.puppetlabs.com" }
10
+ let(:module_name) { "test" }
11
+ let(:version) { "1.0.0" }
12
+ let(:package) { File.dirname(__FILE__) + '/../data/maestrodev-ant-1.0.4.tar.gz' }
13
+
14
+ describe 'push' do
15
+
16
+ before do
17
+ FileUtils.mkdir_p("pkg")
18
+ FileUtils.touch("pkg/#{username}-#{module_name}-#{version}.tar.gz")
19
+ end
20
+
21
+ context "when using username and password" do
22
+ before do
23
+ stub_request(:post, "#{forge}/login").with(
24
+ :body => {'username' => username, 'password' => password}).to_return(
25
+ :status => 200, :headers => { 'Set-Cookie' => "auth=xxx; path=/; expires=Tue, 27-Aug-2013 08:34:51 GMT" })
26
+
27
+ stub_request(:post, "#{forge}/#{username}/#{module_name}/upload").to_return(:status => 200)
28
+ subject.push!(module_name, package)
29
+ end
30
+
31
+ it "should push the module" do
32
+
33
+ end
34
+ end
35
+
36
+ context "when forge returns an error" do
37
+ before do
38
+ stub_request(:post, "#{forge}/login").with(
39
+ :body => {'username' => username, 'password' => password}).to_return(
40
+ :status => 200, :headers => { 'Set-Cookie' => "auth=xxx; path=/; expires=Tue, 27-Aug-2013 08:34:51 GMT" })
41
+
42
+ stub_request(:post, "#{forge}/#{username}/#{module_name}/upload").to_return(
43
+ :body => File.new('spec/data/forge_error.html'), :status => 200)
44
+ end
45
+
46
+ it "should handle the error" do
47
+ expect { subject.push!(module_name, package) }.to raise_error(%r{^Error uploading module .*maestrodev-ant-1.0.4.tar.gz to Puppet Forge johndoe/test})
48
+ end
49
+ end
50
+ end
51
+ end
52
+
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Blacksmith::Git' do
4
+
5
+ subject { Blacksmith::Git.new(path) }
6
+ let(:path) { File.join(File.dirname(__FILE__), '../../tmp/git_test') }
7
+ let(:version) { '1.0.0' }
8
+
9
+ before do
10
+ FileUtils.rm_rf path
11
+ FileUtils.mkdir_p(path)
12
+ `git init #{path}`
13
+ FileUtils.touch(File.join(path, "Modulefile"))
14
+ `cd #{path} && git add Modulefile && git commit -am "Init"`
15
+ end
16
+
17
+ describe 'tag!' do
18
+ before { subject.tag!(version) }
19
+ it "should have the tag" do
20
+ out = `cd #{path} && git tag`
21
+ out.chomp.should match(/^v1.0.0$/)
22
+ end
23
+ end
24
+ end
@@ -1,6 +1,15 @@
1
- require 'puppet_blacksmith/rake_tasks'
1
+ require 'spec_helper'
2
2
 
3
- describe 'rake tasks' do
3
+ describe 'Blacksmith::Modulefile' do
4
+
5
+ subject { Blacksmith::Modulefile.new(path) }
6
+ let(:path) { "spec/data/Modulefile" }
7
+
8
+ context 'when modulefile is parsed' do
9
+ it { subject.metadata.version.should eql("1.0.0") }
10
+ it { subject.metadata.username.should eql("maestrodev") }
11
+ it { subject.metadata.name.should eql("test") }
12
+ end
4
13
 
5
14
  describe 'replace_version' do
6
15
  it "should replace the version" do
@@ -28,25 +37,15 @@ summary 'version "1"'
28
37
  description "version '1'"
29
38
  eos
30
39
 
31
- replace_version(original, "1.0.1").should eql(expected)
40
+ subject.replace_version(original, "1.0.1").should eql(expected)
32
41
  end
33
42
  end
34
43
 
35
44
  describe 'increase_version' do
36
- it "should increase the version" do
37
- increase_version("1.0").should eql("1.1")
38
- increase_version("1.0.0").should eql("1.0.1")
39
- increase_version("1.0.1").should eql("1.0.2")
40
- expect { increase_version("1.0.12qwe") }.to raise_error
41
- end
45
+ it { subject.increase_version("1.0").should eql("1.1") }
46
+ it { subject.increase_version("1.0.0").should eql("1.0.1") }
47
+ it { subject.increase_version("1.0.1").should eql("1.0.2") }
48
+ it { expect { subject.increase_version("1.0.12qwe") }.to raise_error }
42
49
  end
43
50
 
44
- describe 'modulefile' do
45
- it "should parse the modulefile" do
46
- m = modulefile("spec/data/Modulefile")
47
- m.version.should eql("1.0.0")
48
- m.username.should eql("maestrodev")
49
- m.name.should eql("test")
50
- end
51
- end
52
51
  end
@@ -0,0 +1,2 @@
1
+ require 'webmock/rspec'
2
+ require 'puppet_blacksmith'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-blacksmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-11 00:00:00.000000000 Z
12
+ date: 2013-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: &12387780 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: *12387780
25
14
  - !ruby/object:Gem::Dependency
26
15
  name: rest-client
27
- requirement: &12386620 !ruby/object:Gem::Requirement
16
+ requirement: &16892060 !ruby/object:Gem::Requirement
28
17
  none: false
29
18
  requirements:
30
19
  - - ! '>='
@@ -32,10 +21,10 @@ dependencies:
32
21
  version: '0'
33
22
  type: :runtime
34
23
  prerelease: false
35
- version_requirements: *12386620
24
+ version_requirements: *16892060
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: puppet
38
- requirement: &12421260 !ruby/object:Gem::Requirement
27
+ requirement: &16891460 !ruby/object:Gem::Requirement
39
28
  none: false
40
29
  requirements:
41
30
  - - ! '>='
@@ -43,32 +32,32 @@ dependencies:
43
32
  version: 2.7.16
44
33
  type: :runtime
45
34
  prerelease: false
46
- version_requirements: *12421260
35
+ version_requirements: *16891460
47
36
  - !ruby/object:Gem::Dependency
48
- name: puppetlabs_spec_helper
49
- requirement: &12418920 !ruby/object:Gem::Requirement
37
+ name: nokogiri
38
+ requirement: &16890980 !ruby/object:Gem::Requirement
50
39
  none: false
51
40
  requirements:
52
41
  - - ! '>='
53
42
  - !ruby/object:Gem::Version
54
- version: 0.3.0
43
+ version: '0'
55
44
  type: :runtime
56
45
  prerelease: false
57
- version_requirements: *12418920
46
+ version_requirements: *16890980
58
47
  - !ruby/object:Gem::Dependency
59
- name: nokogiri
60
- requirement: &12417620 !ruby/object:Gem::Requirement
48
+ name: rake
49
+ requirement: &16890460 !ruby/object:Gem::Requirement
61
50
  none: false
62
51
  requirements:
63
52
  - - ! '>='
64
53
  - !ruby/object:Gem::Version
65
54
  version: '0'
66
- type: :runtime
55
+ type: :development
67
56
  prerelease: false
68
- version_requirements: *12417620
57
+ version_requirements: *16890460
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: cucumber
71
- requirement: &12416140 !ruby/object:Gem::Requirement
60
+ requirement: &16889980 !ruby/object:Gem::Requirement
72
61
  none: false
73
62
  requirements:
74
63
  - - ! '>='
@@ -76,10 +65,10 @@ dependencies:
76
65
  version: '0'
77
66
  type: :development
78
67
  prerelease: false
79
- version_requirements: *12416140
68
+ version_requirements: *16889980
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: aruba
82
- requirement: &12414740 !ruby/object:Gem::Requirement
71
+ requirement: &16889520 !ruby/object:Gem::Requirement
83
72
  none: false
84
73
  requirements:
85
74
  - - ! '>='
@@ -87,10 +76,10 @@ dependencies:
87
76
  version: '0'
88
77
  type: :development
89
78
  prerelease: false
90
- version_requirements: *12414740
79
+ version_requirements: *16889520
91
80
  - !ruby/object:Gem::Dependency
92
81
  name: rspec
93
- requirement: &12559120 !ruby/object:Gem::Requirement
82
+ requirement: &16888960 !ruby/object:Gem::Requirement
94
83
  none: false
95
84
  requirements:
96
85
  - - ! '>='
@@ -98,7 +87,18 @@ dependencies:
98
87
  version: 2.7.0
99
88
  type: :development
100
89
  prerelease: false
101
- version_requirements: *12559120
90
+ version_requirements: *16888960
91
+ - !ruby/object:Gem::Dependency
92
+ name: webmock
93
+ requirement: &16888440 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *16888440
102
102
  description: Puppet module tools for development and Puppet Forge management
103
103
  email:
104
104
  - info@maestrodev.com
@@ -106,9 +106,20 @@ executables: []
106
106
  extensions: []
107
107
  extra_rdoc_files: []
108
108
  files:
109
+ - lib/puppet_blacksmith.rb
110
+ - lib/puppet_blacksmith/forge.rb
111
+ - lib/puppet_blacksmith/modulefile.rb
109
112
  - lib/puppet_blacksmith/rake_tasks.rb
113
+ - lib/puppet_blacksmith/version.rb
114
+ - lib/puppet_blacksmith/error.rb
115
+ - lib/puppet_blacksmith/git.rb
110
116
  - LICENSE
111
- - spec/puppet_blacksmith/rake_tasks_spec.rb
117
+ - spec/spec_helper.rb
118
+ - spec/puppet_blacksmith/git_spec.rb
119
+ - spec/puppet_blacksmith/forge_spec.rb
120
+ - spec/puppet_blacksmith/modulefile_spec.rb
121
+ - spec/data/maestrodev-ant-1.0.4.tar.gz
122
+ - spec/data/forge_error.html
112
123
  - spec/data/Modulefile
113
124
  homepage: http://github.com/maestrodev/puppet-blacksmith
114
125
  licenses: []
@@ -124,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
135
  version: '0'
125
136
  segments:
126
137
  - 0
127
- hash: -2324545101189307236
138
+ hash: 3568524494369527716
128
139
  required_rubygems_version: !ruby/object:Gem::Requirement
129
140
  none: false
130
141
  requirements:
@@ -138,5 +149,10 @@ signing_key:
138
149
  specification_version: 3
139
150
  summary: Tasks to manage Puppet module builds
140
151
  test_files:
141
- - spec/puppet_blacksmith/rake_tasks_spec.rb
152
+ - spec/spec_helper.rb
153
+ - spec/puppet_blacksmith/git_spec.rb
154
+ - spec/puppet_blacksmith/forge_spec.rb
155
+ - spec/puppet_blacksmith/modulefile_spec.rb
156
+ - spec/data/maestrodev-ant-1.0.4.tar.gz
157
+ - spec/data/forge_error.html
142
158
  - spec/data/Modulefile