dpl 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f54b23388d9cba1b8f2f87a76c7761fb27325111
4
- data.tar.gz: 4ab1bfb46e6e7dd95ed05cae4ffc4baee40a4148
3
+ metadata.gz: 45d759b440ccb1838b4738c28b23827a83db1a0c
4
+ data.tar.gz: 30db537d8213204f14c4e0974781eb00f34feeb9
5
5
  SHA512:
6
- metadata.gz: 520f540c407d85bc0a0a2f4e49f3f31127361c45ef4cd4f5b4ea5bbe3b832d135769debe80dc8947a13cb9f6608df06f61d09ca37cf766203542fbfc18079d4f
7
- data.tar.gz: 977ded497353b08f50255b1bd6d9850026293a2f741460062a04eb70e7af7a3b950799964ff9e9d40b340cd964e76ada9362e33aef874108bfe0ea2df855190a
6
+ metadata.gz: 116d8ce147d9eaac137e74ed1b1f56eb569efd48a0212fc0b5914be783289c1532409ec87d79861c779236ae954e5b1296c969b0d138260530351b4682817e87
7
+ data.tar.gz: eb0c13c8219333299a8809d490e264aaddb518d8fe4233657ecc751937f8c6437351e2a8a6183fa416fc7a585fc4aa49eb9c38e408c277a38303bebc9fbc835a
data/lib/dpl/provider.rb CHANGED
@@ -8,6 +8,7 @@ module DPL
8
8
  autoload :Heroku, 'dpl/provider/heroku'
9
9
  autoload :EngineYard, 'dpl/provider/engine_yard'
10
10
  autoload :DotCloud, 'dpl/provider/dot_cloud'
11
+ autoload :Nodejitsu, 'dpl/provider/nodejitsu'
11
12
 
12
13
  def self.new(context, options)
13
14
  return super if self < Provider
@@ -38,6 +39,10 @@ module DPL
38
39
  system "pip install #{name}" if `which #{command}`.chop.empty?
39
40
  end
40
41
 
42
+ def self.npm_g(name, command = name)
43
+ system "npm install -g #{name}" if `which #{command}`.chop.empty?
44
+ end
45
+
41
46
  attr_reader :context, :options
42
47
 
43
48
  def initialize(context, options)
@@ -66,7 +71,11 @@ module DPL
66
71
  context.fold("Deploying application") { push_app }
67
72
 
68
73
  Array(options[:run]).each do |command|
69
- context.fold("Running %p" % command) { run(command) }
74
+ if command == 'restart'
75
+ context.fold("Restarting application") { restart }
76
+ else
77
+ context.fold("Running %p" % command) { run(command) }
78
+ end
70
79
  end
71
80
  ensure
72
81
  remove_key if needs_key?
@@ -99,5 +108,13 @@ module DPL
99
108
  def log(message)
100
109
  $stderr.puts(message)
101
110
  end
111
+
112
+ def run(command)
113
+ error "running commands not supported"
114
+ end
115
+
116
+ def error(message)
117
+ raise Error, message
118
+ end
102
119
  end
103
120
  end
@@ -16,8 +16,9 @@ module DPL
16
16
  end
17
17
 
18
18
  def push_app
19
+ sha = ENV['TRAVIS_COMMIT'] || `git rev-parse HEAD`.strip
19
20
  response = Excon.post release_url,
20
- :body => { "slug_url" => slug_url, "description" => "Travis CI deploy" }.to_json,
21
+ :body => { "slug_url" => slug_url, "description" => "Deploy #{sha} via Travis CI" }.to_json,
21
22
  :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
22
23
 
23
24
  print "\nDeploying slug "
@@ -42,6 +42,10 @@ module DPL
42
42
  Rendezvous.start(:url => rendezvous_url) unless rendezvous_url.nil?
43
43
  end
44
44
 
45
+ def restart
46
+ api.post_ps_restart option(:app)
47
+ end
48
+
45
49
  def deploy
46
50
  super
47
51
  rescue ::Heroku::API::Errors::NotFound => error
@@ -0,0 +1,41 @@
1
+ module DPL
2
+ class Provider
3
+ class Nodejitsu < Provider
4
+ CONFIG_FILE = '.dpl/jitsu.json'
5
+
6
+ experimental "Nodejitsu"
7
+ requires 'json'
8
+ npm_g 'jitsu'
9
+
10
+ def config
11
+ {
12
+ "username" => option(:username),
13
+ "apiToken" => option(:api_key),
14
+ "apiTokenName" => "travis"
15
+ }
16
+ end
17
+
18
+ def check_auth
19
+ File.open(CONFIG_FILE, 'w') { |f| f << config.to_json }
20
+ end
21
+
22
+ def check_app
23
+ error "missing package.json" unless File.exist? 'package.json'
24
+
25
+ package = JSON.parse File.read('package.json')
26
+ message = "missing %s in package.json, see https://www.nodejitsu.com/documentation/appendix/package-json/"
27
+ error message % "subdomain" unless package['subdomain']
28
+ error message % "node version" unless package['engines'] and package['engines']['node']
29
+ error message % "start script" unless package['scripts'] and package['scripts']['start']
30
+ end
31
+
32
+ def needs_key?
33
+ false
34
+ end
35
+
36
+ def push_app
37
+ system "jitsu deploy -j #{CONFIG_FILE}"
38
+ end
39
+ end
40
+ end
41
+ end
data/lib/dpl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module DPL
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.3'
3
3
  end
@@ -83,6 +83,13 @@ describe DPL::Provider::Heroku do
83
83
  end
84
84
  end
85
85
 
86
+ describe :restart do
87
+ example do
88
+ api.should_receive(:post_ps_restart).with("example")
89
+ provider.restart
90
+ end
91
+ end
92
+
86
93
  describe :deploy do
87
94
  example "not found error" do
88
95
  provider.should_receive(:api) { raise ::Heroku::API::Errors::NotFound.new("the message", nil) }.at_least(:once)
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.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-08 00:00:00.000000000 Z
11
+ date: 2013-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -76,6 +76,7 @@ files:
76
76
  - lib/dpl/provider/heroku.rb
77
77
  - lib/dpl/provider/heroku/anvil.rb
78
78
  - lib/dpl/provider/heroku/git.rb
79
+ - lib/dpl/provider/nodejitsu.rb
79
80
  - lib/dpl/version.rb
80
81
  - notes/dotcloud.md
81
82
  - notes/engine_yard.md