dpl 1.5.11.travis.432.1 → 1.5.11.travis.435.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 +8 -8
- data/README.md +13 -0
- data/lib/dpl/provider.rb +5 -0
- data/lib/dpl/provider/hackage.rb +29 -0
- data/spec/provider/hackage_spec.rb +47 -0
- data/spec/provider_spec.rb +14 -0
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
YWYwOTVjZDZlOWFjMzJjMzJmZTVlYmY0MmE4ODQwNGNkMjc2ZTNhNQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
M2MzOTUxNzhjNjhjN2YwYzU4ZDQzODAzNjk1NjM5ZDA1YjE3YTEzZQ==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ODdjNTcxM2ZmZGY4M2IyZDNkODMzMmYzYjliMmIzNTc2N2EwYmI1ZGJkOWI4
|
|
10
|
+
NGU3NjZhNjUwZTkxZjI4NTc3Y2M0ZTBkZTNiMzcwZjQyMTA4NzEyMmQ0ZjMw
|
|
11
|
+
MGQ0YzliYWQwNzNhYzU0OGNmZjRhNDkzMzEwMWI1YmUwZTNhMmQ=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MmZmN2RjYjUwOGNmODJhYWZkMjc2YmFkMDA0MThjZTEzMjAwZWFjNmVhZmEz
|
|
14
|
+
MTgwYmI2MGE3OTBlMTQ5NTU1MmYxMTQxNTA0ZWU0MmMzMGRhYjM4NmEzNjhm
|
|
15
|
+
YThhYWFmOTQzYjY2OWNhOTNjMTU1NWJmMjRlMGNkODgzY2NkYTc=
|
data/README.md
CHANGED
|
@@ -23,6 +23,7 @@ Dpl supports the following providers:
|
|
|
23
23
|
* [Modulus](#modulus)
|
|
24
24
|
* [Github Releases](#github-releases)
|
|
25
25
|
* [Ninefold](#ninefold)
|
|
26
|
+
* [Hackage](#hackage)
|
|
26
27
|
|
|
27
28
|
## Installation:
|
|
28
29
|
|
|
@@ -301,3 +302,15 @@ For accounts using two factor authentication, you have to use an oauth token as
|
|
|
301
302
|
#### Examples:
|
|
302
303
|
|
|
303
304
|
dpl --provider=ninefold --auth_token=<auth_token> --app_id=<app_id>
|
|
305
|
+
|
|
306
|
+
### Hackage:
|
|
307
|
+
|
|
308
|
+
#### Options:
|
|
309
|
+
|
|
310
|
+
* **username**: Hackage username.
|
|
311
|
+
* **password**: Hackage password.
|
|
312
|
+
|
|
313
|
+
#### Examples:
|
|
314
|
+
|
|
315
|
+
dpl --provider=hackage --username=<username> --password=<password>
|
|
316
|
+
|
data/lib/dpl/provider.rb
CHANGED
|
@@ -24,6 +24,7 @@ module DPL
|
|
|
24
24
|
autoload :Releases, 'dpl/provider/releases'
|
|
25
25
|
autoload :Cloud66, 'dpl/provider/cloud66'
|
|
26
26
|
autoload :Ninefold, 'dpl/provider/ninefold'
|
|
27
|
+
autoload :Hackage, 'dpl/provider/hackage'
|
|
27
28
|
|
|
28
29
|
def self.new(context, options)
|
|
29
30
|
return super if self < Provider
|
|
@@ -58,6 +59,10 @@ module DPL
|
|
|
58
59
|
system(command)
|
|
59
60
|
end
|
|
60
61
|
|
|
62
|
+
def self.apt_get(name, command = name)
|
|
63
|
+
context.shell("sudo apt-get -qq install #{name}", retry: true) if `which #{command}`.chop.empty?
|
|
64
|
+
end
|
|
65
|
+
|
|
61
66
|
def self.pip(name, command = name)
|
|
62
67
|
context.shell("sudo pip install #{name}", retry: true) if `which #{command}`.chop.empty?
|
|
63
68
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module DPL
|
|
2
|
+
class Provider
|
|
3
|
+
class Hackage < Provider
|
|
4
|
+
apt_get 'cabal', 'cabal-install'
|
|
5
|
+
|
|
6
|
+
def check_auth
|
|
7
|
+
unless option(:username) and option(:password)
|
|
8
|
+
raise Error, "must supply username and password"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def check_app
|
|
13
|
+
context.shell "cabal check" or raise Error, "cabal check failed"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def needs_key?
|
|
17
|
+
false
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def push_app
|
|
21
|
+
context.shell "cabal sdist" or raise Error, "cabal sdist failed"
|
|
22
|
+
Dir.glob("dist/*.tar.gz") do |tar|
|
|
23
|
+
context.shell "cabal upload --username=#{option(:username)} --password=#{option(:password)} #{tar}"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'dpl/provider/hackage'
|
|
3
|
+
|
|
4
|
+
describe DPL::Provider::Hackage do
|
|
5
|
+
subject :provider do
|
|
6
|
+
described_class.new(DummyContext.new, :username => 'FooUser', :password => 'bar')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe :check_auth do
|
|
10
|
+
it 'should require username' do
|
|
11
|
+
provider.options.update(:username => nil)
|
|
12
|
+
expect {
|
|
13
|
+
provider.check_auth
|
|
14
|
+
}.to raise_error(DPL::Error)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should require password' do
|
|
18
|
+
provider.options.update(:password => nil)
|
|
19
|
+
expect {
|
|
20
|
+
provider.check_auth
|
|
21
|
+
}.to raise_error(DPL::Error)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe :check_app do
|
|
26
|
+
it 'calls cabal' do
|
|
27
|
+
provider.context.should_receive(:shell).with("cabal check").and_return(true)
|
|
28
|
+
provider.check_app
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'fails when cabal complains' do
|
|
32
|
+
provider.context.should_receive(:shell).with("cabal check").and_return(false)
|
|
33
|
+
expect {
|
|
34
|
+
provider.check_app
|
|
35
|
+
}.to raise_error(DPL::Error)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe :push_app do
|
|
40
|
+
example do
|
|
41
|
+
provider.context.should_receive(:shell).with("cabal sdist").and_return(true)
|
|
42
|
+
Dir.should_receive(:glob).and_yield('dist/package-0.1.2.3.tar.gz')
|
|
43
|
+
provider.context.should_receive(:shell).with("cabal upload --username=FooUser --password=bar dist/package-0.1.2.3.tar.gz")
|
|
44
|
+
provider.push_app
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/spec/provider_spec.rb
CHANGED
|
@@ -31,6 +31,20 @@ describe DPL::Provider do
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
describe :apt_get do
|
|
35
|
+
example "installed" do
|
|
36
|
+
example_provider.should_receive(:`).with("which foo").and_return("/bin/foo\n")
|
|
37
|
+
example_provider.should_not_receive(:system)
|
|
38
|
+
example_provider.apt_get("foo")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
example "missing" do
|
|
42
|
+
example_provider.should_receive(:`).with("which foo").and_return("")
|
|
43
|
+
example_provider.context.should_receive(:shell).with("sudo apt-get -qq install foo", retry: true)
|
|
44
|
+
example_provider.apt_get("foo")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
34
48
|
describe :pip do
|
|
35
49
|
example "installed" do
|
|
36
50
|
example_provider.should_receive(:`).with("which foo").and_return("/bin/foo\n")
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dpl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.11.travis.
|
|
4
|
+
version: 1.5.11.travis.435.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Konstantin Haase
|
|
@@ -93,6 +93,7 @@ files:
|
|
|
93
93
|
- lib/dpl/provider/divshot.rb
|
|
94
94
|
- lib/dpl/provider/dot_cloud.rb
|
|
95
95
|
- lib/dpl/provider/engine_yard.rb
|
|
96
|
+
- lib/dpl/provider/hackage.rb
|
|
96
97
|
- lib/dpl/provider/heroku.rb
|
|
97
98
|
- lib/dpl/provider/heroku/anvil.rb
|
|
98
99
|
- lib/dpl/provider/heroku/git.rb
|
|
@@ -119,6 +120,7 @@ files:
|
|
|
119
120
|
- spec/provider/cloudfoundry_spec.rb
|
|
120
121
|
- spec/provider/divshot_spec.rb
|
|
121
122
|
- spec/provider/dotcloud_spec.rb
|
|
123
|
+
- spec/provider/hackage_spec.rb
|
|
122
124
|
- spec/provider/heroku_anvil_spec.rb
|
|
123
125
|
- spec/provider/heroku_git_deploy_key_spec.rb
|
|
124
126
|
- spec/provider/heroku_git_spec.rb
|