deploy_docus 0.0.2 → 0.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.
@@ -1,4 +1,5 @@
1
1
  require 'sinatra/base'
2
+ require 'json'
2
3
 
3
4
  module DeployDocus
4
5
  class Base < Sinatra::Base
@@ -12,10 +13,11 @@ module DeployDocus
12
13
  config = DeployDocus::Config.new(params[:application])
13
14
  deployer = DeployDocus::Deployer.new(config['repository'], "keys/#{params[:application]}_rsa", config.deploy_task(params[:environment]))
14
15
 
16
+ content_type :json
15
17
  if deployer.deploy!
16
- "OK"
18
+ {:status => "OK"}.to_json
17
19
  else
18
- "NOT OK"
20
+ {:status => "NOT OK", :error => deployer.errors}.to_json
19
21
  end
20
22
  end
21
23
  end
@@ -1,10 +1,17 @@
1
1
  require 'git-ssh-wrapper'
2
+ require 'active_model'
2
3
 
3
4
  module DeployDocus
4
5
  class Deployer
6
+ include ActiveModel::Validations
7
+
5
8
  attr_reader :repository, :ssh_key, :deploy_task
6
9
  attr_accessor :wrapper
7
10
 
11
+ validates :repository, :presence => {:allow_blank => false}
12
+ validates :ssh_key, :presence => {:allow_blank => false}
13
+ validates :deploy_task, :presence => {:allow_blank => false}
14
+
8
15
  #
9
16
  # Manages cloning and deploying the repository
10
17
  # This class is agnostic of any web interface and can be used as a library
@@ -15,15 +22,19 @@ module DeployDocus
15
22
  # And execute the deploy_task on it.
16
23
  #
17
24
  def initialize(repository, ssh_key, deploy_task)
18
- @repository, @ssh_key, @deploy_task = repository, File.expand_path(ssh_key), deploy_task
25
+ ssh_key = File.expand_path(ssh_key) if ssh_key
26
+ @repository, @ssh_key, @deploy_task = repository, ssh_key, deploy_task
19
27
  end
20
28
 
21
29
  def deploy!
22
- GitSSHWrapper.with_wrapper(:private_key => ssh_key) do |w|
23
- wrapper = w
24
-
25
- clone
26
- run_deploy
30
+ if self.valid?
31
+ GitSSHWrapper.with_wrapper(:private_key_path => ssh_key) do |w|
32
+ @wrapper = w
33
+
34
+ clone && run_deploy
35
+ end
36
+ else
37
+ false
27
38
  end
28
39
  end
29
40
 
@@ -31,12 +42,14 @@ module DeployDocus
31
42
  private
32
43
  def clone
33
44
  puts "cloning #{repository}"
34
- %x[#{@wrapper ? 'env ' + @wrapper.git_ssh : ''} git clone #{repository} #{tmp}]
45
+ %x[#{wrapper.nil? ? '' : 'env ' + @wrapper.git_ssh} git clone #{repository} #{tmp}]
46
+ $?.exitstatus == 0
35
47
  end
36
48
 
37
49
  def run_deploy
38
50
  puts "deploying : #{deploy_task}"
39
- %x[#{@wrapper ? 'env ' + @wrapper.git_ssh : ''} cd #{tmp}; #{deploy_task}]
51
+ %x[#{wrapper.nil? ? '' : 'env ' + @wrapper.git_ssh} cd #{tmp}; #{deploy_task}]
52
+ $?.exitstatus == 0
40
53
  end
41
54
 
42
55
  def tmp
@@ -0,0 +1,19 @@
1
+ require 'thor/group'
2
+
3
+ module DeployDocus
4
+ module Generators
5
+ class New < Thor::Group
6
+ include Thor::Actions
7
+
8
+ argument :name
9
+
10
+ def self.source_root
11
+ File.dirname(__FILE__)
12
+ end
13
+
14
+ def copy_files
15
+ directory "templates/new", name
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gem 'deploy_docus', :path => '../deploy_docus'
@@ -0,0 +1 @@
1
+ web: bundle exec rackup -p $PORT
@@ -0,0 +1,5 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require 'deploy_docus'
4
+
5
+ run DeployDocus
@@ -0,0 +1,4 @@
1
+ website:
2
+ repository: git@github.com:evome/evome.git
3
+ deploy_task:
4
+ staging: git push git@heroku.com:evome-staging.git
@@ -0,0 +1,5 @@
1
+ module DeployDocus
2
+ module Generators
3
+ autoload :New, 'deploy_docus/generators/new'
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module DeployDocus
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
data/lib/deploy_docus.rb CHANGED
@@ -6,6 +6,7 @@ module DeployDocus
6
6
  autoload :Deployer, 'deploy_docus/deployer'
7
7
  autoload :Version, 'deploy_docus/version'
8
8
  autoload :Config, 'deploy_docus/config'
9
+ autoload :Generators, 'deploy_docus/generators'
9
10
 
10
11
  def self.call(env)
11
12
  Base.call(env)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deploy_docus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-28 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70124010776780 !ruby/object:Gem::Requirement
16
+ requirement: &70277829594420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70124010776780
24
+ version_requirements: *70277829594420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70124010776140 !ruby/object:Gem::Requirement
27
+ requirement: &70277829594000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70124010776140
35
+ version_requirements: *70277829594000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack-test
38
- requirement: &70124010775620 !ruby/object:Gem::Requirement
38
+ requirement: &70277829593460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70124010775620
46
+ version_requirements: *70277829593460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &70124010774880 !ruby/object:Gem::Requirement
49
+ requirement: &70277829592920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70124010774880
57
+ version_requirements: *70277829592920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sinatra
60
- requirement: &70124010774260 !ruby/object:Gem::Requirement
60
+ requirement: &70277829592380 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70124010774260
68
+ version_requirements: *70277829592380
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &70124010773500 !ruby/object:Gem::Requirement
71
+ requirement: &70277829591720 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.8.7
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70124010773500
79
+ version_requirements: *70277829591720
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: git-ssh-wrapper
82
- requirement: &70124010772900 !ruby/object:Gem::Requirement
82
+ requirement: &70277829591280 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,29 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70124010772900
90
+ version_requirements: *70277829591280
91
+ - !ruby/object:Gem::Dependency
92
+ name: activemodel
93
+ requirement: &70277829578380 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70277829578380
102
+ - !ruby/object:Gem::Dependency
103
+ name: thor
104
+ requirement: &70277829577880 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *70277829577880
91
113
  description: Deploy your application with a POST request
92
114
  email: dev@evome.fr
93
115
  executables: []
@@ -98,6 +120,13 @@ files:
98
120
  - lib/deploy_docus/base.rb
99
121
  - lib/deploy_docus/config.rb
100
122
  - lib/deploy_docus/deployer.rb
123
+ - lib/deploy_docus/generators.rb
124
+ - lib/deploy_docus/generators/new.rb
125
+ - lib/deploy_docus/generators/templates/new/Gemfile
126
+ - lib/deploy_docus/generators/templates/new/Procfile
127
+ - lib/deploy_docus/generators/templates/new/config.ru
128
+ - lib/deploy_docus/generators/templates/new/config.yml
129
+ - lib/deploy_docus/generators/templates/new/keys/.gitkeep
101
130
  - lib/deploy_docus/version.rb
102
131
  homepage: https://github.com/evome/deploy_docus
103
132
  licenses: []