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 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