dpl 1.5.11.travis.432.1 → 1.5.11.travis.435.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODU0NmUzNzEwNDk0YjQ2MGQzODIyMGI2MzIwZDY3MjEzMmVkOWNmZQ==
4
+ YWYwOTVjZDZlOWFjMzJjMzJmZTVlYmY0MmE4ODQwNGNkMjc2ZTNhNQ==
5
5
  data.tar.gz: !binary |-
6
- ZDVkNGM1N2MwNjM2NWM1NjIwYzFiYWU2NGEzNjQyMmVkNGYxZmQzZg==
6
+ M2MzOTUxNzhjNjhjN2YwYzU4ZDQzODAzNjk1NjM5ZDA1YjE3YTEzZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTZlMGIyNzk0YTM3ZmFjNTdjMTE1ODcwYWYwOWQ5MDJiMTY2N2Y5MGI3MjM3
10
- MjRmNmZlNjA1Y2JjMDk2ZTdmZmRlMGE0MWE0NWRjMGNiOTBjNWM0MzJmY2Qz
11
- MmRiNGFmZmVmMDVmMzExODk0NmYyNWI2NDhiNDZhYjkyYzk4NTI=
9
+ ODdjNTcxM2ZmZGY4M2IyZDNkODMzMmYzYjliMmIzNTc2N2EwYmI1ZGJkOWI4
10
+ NGU3NjZhNjUwZTkxZjI4NTc3Y2M0ZTBkZTNiMzcwZjQyMTA4NzEyMmQ0ZjMw
11
+ MGQ0YzliYWQwNzNhYzU0OGNmZjRhNDkzMzEwMWI1YmUwZTNhMmQ=
12
12
  data.tar.gz: !binary |-
13
- NzA0NzI3NGY0YzdjNjJkMjk5NjJiMDgyYzQ4N2ZmOTg3MmFlNDlhODA2MTJm
14
- YTFmMzUzZmI2Zjc2OTI5ZTQ3MDVjNzUwMWVkNDFkZjBkNDhiZTNjZDY0NTU4
15
- Y2NmMDRiOTJkODlmYTRmY2M5NTY2MjFkMDFlNzE5YzEyYmU1ZGE=
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
@@ -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.432.1
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