dpl 1.0.2 → 1.0.3

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