dpl 0.1.0 → 0.2.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.
- data/lib/dpl/provider.rb +10 -2
- data/lib/dpl/provider/dot_cloud.rb +24 -0
- data/lib/dpl/provider/engine_yard.rb +67 -0
- data/lib/dpl/version.rb +1 -1
- metadata +4 -2
data/lib/dpl/provider.rb
CHANGED
@@ -5,7 +5,9 @@ module DPL
|
|
5
5
|
class Provider
|
6
6
|
include FileUtils
|
7
7
|
|
8
|
-
autoload :Heroku,
|
8
|
+
autoload :Heroku, 'dpl/provider/heroku'
|
9
|
+
autoload :EngineYard, 'dpl/provider/engine_yard'
|
10
|
+
autoload :DotCloud, 'dpl/provider/dot_cloud'
|
9
11
|
|
10
12
|
def self.new(context, options)
|
11
13
|
return super if self < Provider
|
@@ -23,6 +25,10 @@ module DPL
|
|
23
25
|
require name
|
24
26
|
end
|
25
27
|
|
28
|
+
def self.pip(name, command = name)
|
29
|
+
system "pip install #{name}" if `which #{command}`.chop.empty?
|
30
|
+
end
|
31
|
+
|
26
32
|
attr_reader :context, :options
|
27
33
|
|
28
34
|
def initialize(context, options)
|
@@ -55,11 +61,13 @@ module DPL
|
|
55
61
|
remove_key if needs_key?
|
56
62
|
end
|
57
63
|
|
58
|
-
|
59
64
|
def needs_key?
|
60
65
|
true
|
61
66
|
end
|
62
67
|
|
68
|
+
def check_app
|
69
|
+
end
|
70
|
+
|
63
71
|
def create_key(file)
|
64
72
|
system "ssh-keygen -t rsa -N \"\" -C #{option(:key_name)} -f #{file}"
|
65
73
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module DPL
|
2
|
+
class Provider
|
3
|
+
class DotCloud < Provider
|
4
|
+
pip 'dotcloud'
|
5
|
+
|
6
|
+
def check_auth
|
7
|
+
system "echo #{option(:api_key)} | dotcloud setup --api-key"
|
8
|
+
end
|
9
|
+
|
10
|
+
def needs_key?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def push_app
|
15
|
+
`dotcloud push #{option(:app)}`
|
16
|
+
end
|
17
|
+
|
18
|
+
def run(command)
|
19
|
+
service = option[:instance] || option[:service] || 'www'
|
20
|
+
`dotcloud -A #{option(:app)} #{service} #{command}`
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module DPL
|
2
|
+
class Provider
|
3
|
+
class EngineYard < Provider
|
4
|
+
requires 'engineyard'
|
5
|
+
requires 'engineyard-cloud-client'
|
6
|
+
|
7
|
+
def token
|
8
|
+
options[:api_key] ||= if options[:email] and options[:password]
|
9
|
+
EY::CloudClient.authenticate(options[:email], options[:password])
|
10
|
+
else
|
11
|
+
option(:api_key) # will raise
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def api
|
16
|
+
@api ||= EY::CloudClient.new(token, EY::CLI::UI.new)
|
17
|
+
end
|
18
|
+
|
19
|
+
def check_auth
|
20
|
+
log "authenticated as %s" % api.current_user.email
|
21
|
+
end
|
22
|
+
|
23
|
+
def check_app
|
24
|
+
@app = EY::CloudClient::App.all(api).detect do |app|
|
25
|
+
app.name == option(:app)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def setup_key(file)
|
30
|
+
@key = EY::CloudClient::Keypair.create(api, {
|
31
|
+
"name" => option(:key_name),
|
32
|
+
"public_key" => File.read(file)
|
33
|
+
})
|
34
|
+
end
|
35
|
+
|
36
|
+
def remove_key
|
37
|
+
@key.destroy if @key
|
38
|
+
end
|
39
|
+
|
40
|
+
def push_app
|
41
|
+
fail
|
42
|
+
EY::CloudClient::Deployment.deploy(api, option(:environment), deploy_args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def deploy_args
|
46
|
+
deploy_args = { :ref => `git log --format="%H" -1`.chop }
|
47
|
+
if options[:run]
|
48
|
+
deploy_args[:migrate] = true
|
49
|
+
deploy_args[:migrate_command] = Array(options[:run]).map { |c| "(#{c})" }.join(" && ")
|
50
|
+
elsif options.include? :migrate
|
51
|
+
deploy_args[:migrate] = options[:migrate]
|
52
|
+
end
|
53
|
+
deploy_args
|
54
|
+
end
|
55
|
+
|
56
|
+
def run(command)
|
57
|
+
# commands run by deployment
|
58
|
+
end
|
59
|
+
|
60
|
+
def deploy
|
61
|
+
super
|
62
|
+
rescue EY::Error => error
|
63
|
+
raise Error, error.message, error.backtrace
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/dpl/version.rb
CHANGED
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: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-06-03 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: deploy tool abstraction for clients
|
15
15
|
email: konstantin.mailinglists@googlemail.com
|
@@ -26,6 +26,8 @@ files:
|
|
26
26
|
- lib/dpl/cli.rb
|
27
27
|
- lib/dpl/error.rb
|
28
28
|
- lib/dpl/provider.rb
|
29
|
+
- lib/dpl/provider/dot_cloud.rb
|
30
|
+
- lib/dpl/provider/engine_yard.rb
|
29
31
|
- lib/dpl/provider/heroku.rb
|
30
32
|
- lib/dpl/version.rb
|
31
33
|
homepage: https://github.com/rkh/dpl
|