dpl 1.7.1.travis.575.1 → 1.7.1.travis.577.1

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmEwZGRjMWI3OTUyY2RhYTQzMDU0NmEwZGIxMGIzM2NmZDVjMDZhYQ==
4
+ MTkwNTdjYmJkMGVlZDdmMTFhOTMxOGI2YWM5MGQ5MjhjZWQzMzRhOQ==
5
5
  data.tar.gz: !binary |-
6
- MTRhYTQyYzljZjIzOGIwZThjYzUwMjRjNDNhOGFkOTE1ZTVmYzU2Yw==
6
+ ZTIwYTNjYWVjMzU5YmI4NWQ1YTdlOWUwMzZlNWEyM2Q2ODM3MzgxNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODk0YTIwOTk5MTBiZjNiOGVlNzlkYjhmYzhhMGVmMGM0NjY3YjBjNjgxZjFm
10
- NTk0ZGI2Y2U2MjQyNjVlYjljYjQ0MjcxMDViNDE5MzlkMzEzMjIxNzY2OWM5
11
- OTYwYzNhNDRjNjVjOWY4YmZiZmI4ZjhiYzdiMzY5YzUzMGE3Zjg=
9
+ N2U2NjdmZDY3ZTNlN2EzYjgwZjZmM2I1OGIzYzM1M2VmNDVkMDMzNDZjYzdm
10
+ MmUzNTk3OTc4NDU5YzI2NjNhMWQwNmQ2YjNlZTFiNmMzZGFlMmRmYWYwNjc3
11
+ YTBlNTMzM2I0ZDc1MjBjODhjMmJiNGZiMGM2MTBiNTA0NmFhNTk=
12
12
  data.tar.gz: !binary |-
13
- NTJjY2U0YWJiZDE5YjhhOGVjZWRjMzA0MWEyZWI1ZGNiMDcwMjA4NGNjZDc2
14
- NDViYzBjY2Y5MTQ3Mzg4NTA2MmM3NzViYzAzZWFkOGExNTgzZGEwYzk1YmVj
15
- NjI2YTBiODFhNDY1NWEzNmIzODdmN2U0YjkyMTdkNTAxOWZjMTk=
13
+ YzBiNTcwZDRiNzcwOGFhNjg3OTUyMWE4OTQ1MjRmMDRmYWE2YTQ4MWU5ZDk0
14
+ NDY1MGI5MmQ2ODA1YzI3NmE3ZmRmOWY4ODJlM2RiOTBmNjM0N2NkYjczN2Ex
15
+ MmFmNjJiMmNhNTQ0YTIzNThkNWUzNjk2NzY4MGQzMjQ5NDA0Yjc=
data/Gemfile CHANGED
@@ -54,3 +54,8 @@ end
54
54
  group :bitballoon do
55
55
  gem 'bitballoon'
56
56
  end
57
+
58
+ group :puppet_forge do
59
+ gem 'puppet'
60
+ gem 'puppet-blacksmith'
61
+ end
data/README.md CHANGED
@@ -28,6 +28,7 @@ Dpl supports the following providers:
28
28
  * [Deis](#deis)
29
29
  * [Google Cloud Storage](#google-cloud-storage)
30
30
  * [Elastic Beanstalk](#elastic-beanstalk)
31
+ * [Puppet Forge](#puppet-forge)
31
32
 
32
33
  ## Installation:
33
34
 
@@ -390,3 +391,14 @@ For accounts using two factor authentication, you have to use an oauth token as
390
391
  dpl --access-token=<access-token> --site-id=3f932c1e-708b-4573-938a-a07d9728c22e
391
392
  dpl --access-token=<access-token> --site-id=3f932c1e-708b-4573-938a-a07d9728c22e --local-dir=build
392
393
 
394
+ ### Puppet Forge:
395
+
396
+ #### Options:
397
+
398
+ * **user**: Required. The user name at Puppet forge.
399
+ * **password**: Required. The Puppet forge password.
400
+ * **url**: Optional. The forge URL to deploy to. Defaults to https://forgeapi.puppetlabs.com/
401
+
402
+ #### Examples:
403
+
404
+ dpl --provider=puppetforge --user=puppetlabs --password=s3cr3t
data/lib/dpl/provider.rb CHANGED
@@ -30,6 +30,7 @@ module DPL
30
30
  autoload :GAE, 'dpl/provider/gae'
31
31
  autoload :BitBalloon, 'dpl/provider/bitballoon'
32
32
  autoload :ElasticBeanstalk, 'dpl/provider/elastic_beanstalk'
33
+ autoload :PuppetForge, 'dpl/provider/puppet_forge'
33
34
 
34
35
  def self.new(context, options)
35
36
  return super if self < Provider
@@ -0,0 +1,42 @@
1
+ module DPL
2
+ class Provider
3
+ class PuppetForge < Provider
4
+ require 'pathname'
5
+
6
+ requires 'puppet', :load => 'puppet/face'
7
+ requires 'puppet-blacksmith', :load => 'puppet_blacksmith'
8
+
9
+ def modulefile
10
+ @modulefile ||= Blacksmith::Modulefile.new
11
+ end
12
+
13
+ def forge
14
+ @forge ||= Blacksmith::Forge.new(options[:user], options[:password], options[:url])
15
+ end
16
+
17
+ def build
18
+ pmod = Puppet::Face['module', :current]
19
+ pmod.build('./')
20
+ end
21
+
22
+ def needs_key?
23
+ false
24
+ end
25
+
26
+ def check_app
27
+ modulefile.metadata
28
+ end
29
+
30
+ def check_auth
31
+ raise Error, "must supply a user" unless option(:user)
32
+ raise Error, "must supply a password" unless option(:password)
33
+ end
34
+
35
+ def push_app
36
+ build
37
+ log "Uploading to Puppet Forge #{forge.username}/#{modulefile.name}"
38
+ forge.push!(modulefile.name)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'dpl/provider/puppet_forge'
3
+ require 'puppet/face'
4
+ require 'puppet_blacksmith'
5
+
6
+ describe DPL::Provider::PuppetForge do
7
+ subject :provider do
8
+ described_class.new(DummyContext.new, :user => 'puppetlabs', :password => 's3cr3t')
9
+ end
10
+
11
+ describe "forge" do
12
+ it 'should include the user and password specified' do
13
+ expect(provider.forge.username).to eq(provider.options[:user])
14
+ expect(provider.forge.password).to eq(provider.options[:password])
15
+ end
16
+ end
17
+
18
+ describe "build" do
19
+ it 'should use Puppet module tool to build the module' do
20
+ pmt = double('pmt')
21
+ expect(::Puppet::Face).to receive(:[]).and_return(pmt)
22
+ expect(pmt).to receive(:build).with('./')
23
+ provider.build
24
+ end
25
+ end
26
+
27
+ describe "#check_auth" do
28
+ it 'should require a user' do
29
+ provider.options.update(:user => nil)
30
+ expect{ provider.check_auth }.to raise_error("must supply a user")
31
+ end
32
+
33
+ it 'should require a password' do
34
+ provider.options.update(:password => nil)
35
+ expect{ provider.check_auth }.to raise_error("must supply a password")
36
+ end
37
+ end
38
+
39
+ describe "#check_app" do
40
+ it 'should load module metadata using Blacksmith' do
41
+ modulefile = double('modulefile')
42
+ expect(::Blacksmith::Modulefile).to receive(:new).and_return(modulefile)
43
+ expect(modulefile).to receive(:metadata) { true }
44
+ provider.check_app
45
+ end
46
+ end
47
+
48
+ describe "#push_app" do
49
+ it 'should use Blacksmith to push to the Forge' do
50
+ forge = double('forge')
51
+ expect(provider).to receive(:build).and_return(true)
52
+ expect(provider).to receive(:modulefile).at_least(:once).and_return(double('modulefile', :name => 'test'))
53
+ expect(provider).to receive(:log).and_return(true)
54
+ expect(::Blacksmith::Forge).to receive(:new).and_return(forge)
55
+ expect(forge).to receive(:push!) { true }
56
+ expect(forge).to receive(:username) { provider.options[:user] }
57
+ provider.push_app
58
+ end
59
+ end
60
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1.travis.575.1
4
+ version: 1.7.1.travis.577.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-14 00:00:00.000000000 Z
11
+ date: 2014-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -124,6 +124,7 @@ files:
124
124
  - lib/dpl/provider/npm.rb
125
125
  - lib/dpl/provider/openshift.rb
126
126
  - lib/dpl/provider/ops_works.rb
127
+ - lib/dpl/provider/puppet_forge.rb
127
128
  - lib/dpl/provider/pypi.rb
128
129
  - lib/dpl/provider/releases.rb
129
130
  - lib/dpl/provider/rubygems.rb
@@ -155,6 +156,7 @@ files:
155
156
  - spec/provider/npm.rb
156
157
  - spec/provider/openshift_spec.rb
157
158
  - spec/provider/ops_works_spec.rb
159
+ - spec/provider/puppet_forge_spec.rb
158
160
  - spec/provider/pypi_spec.rb
159
161
  - spec/provider/releases_spec.rb
160
162
  - spec/provider/rubygems_spec.rb