blazing 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +9 -2
- data/README.md +18 -12
- data/Rakefile +1 -0
- data/bin/blazing +2 -0
- data/blazing.gemspec +1 -0
- data/lib/blazing/base.rb +20 -4
- data/lib/blazing/cli/base.rb +3 -9
- data/lib/blazing/cli/create.rb +2 -1
- data/lib/blazing/cli/templates/blazing.tt +1 -1
- data/lib/blazing/config.rb +3 -2
- data/lib/blazing/target.rb +13 -4
- data/lib/blazing/version.rb +1 -1
- data/spec/blazing/cli/create_spec.rb +1 -1
- data/spec/blazing/target_spec.rb +31 -19
- metadata +23 -8
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
blazing (0.0.
|
4
|
+
blazing (0.0.10)
|
5
5
|
activesupport (>= 3.0.5)
|
6
|
+
grit
|
6
7
|
i18n
|
7
8
|
thor (>= 0.14.6)
|
8
9
|
|
9
10
|
GEM
|
10
11
|
remote: http://rubygems.org/
|
11
12
|
specs:
|
12
|
-
activesupport (3.0.
|
13
|
+
activesupport (3.0.9)
|
13
14
|
archive-tar-minitar (0.5.2)
|
14
15
|
columnize (0.3.2)
|
15
16
|
diff-lcs (1.1.2)
|
17
|
+
grit (2.4.1)
|
18
|
+
diff-lcs (~> 1.1)
|
19
|
+
mime-types (~> 1.15)
|
16
20
|
growl (1.0.3)
|
17
21
|
guard (0.4.0.rc)
|
18
22
|
thor (~> 0.14.6)
|
@@ -22,7 +26,9 @@ GEM
|
|
22
26
|
linecache (0.43)
|
23
27
|
linecache19 (0.5.12)
|
24
28
|
ruby_core_source (>= 0.1.4)
|
29
|
+
mime-types (1.16)
|
25
30
|
rake (0.8.7)
|
31
|
+
rb-fsevent (0.4.0)
|
26
32
|
rspec (2.5.0)
|
27
33
|
rspec-core (~> 2.5.0)
|
28
34
|
rspec-expectations (~> 2.5.0)
|
@@ -60,6 +66,7 @@ DEPENDENCIES
|
|
60
66
|
guard (= 0.4.0.rc)
|
61
67
|
guard-rspec
|
62
68
|
rake (= 0.8.7)
|
69
|
+
rb-fsevent
|
63
70
|
rspec
|
64
71
|
ruby-debug
|
65
72
|
ruby-debug19
|
data/README.md
CHANGED
@@ -48,18 +48,22 @@ such systems.
|
|
48
48
|
|
49
49
|
Examples:
|
50
50
|
|
51
|
-
|
51
|
+
```ruby
|
52
|
+
repository 'git@github.com:someones/repository.git'
|
52
53
|
|
53
|
-
|
54
|
+
use [:bundler, :whenever]
|
55
|
+
use :rvm, :rvm_string => 'ree@production'
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
57
|
+
target :stagigng, :deploy_to => 'user@hostname:/path/to/target', :default => true
|
58
|
+
target :production, :deploy_to => 'user@somehostname:/path/to/target'
|
59
|
+
...
|
60
|
+
```
|
59
61
|
|
60
62
|
## Deploying
|
61
63
|
|
62
|
-
|
64
|
+
```bash
|
65
|
+
blazing deploy <target_name>
|
66
|
+
```
|
63
67
|
|
64
68
|
Or, if everyting is already set up on the remote etc. you can acutally
|
65
69
|
just do a git push to your target name.
|
@@ -80,13 +84,15 @@ create a topic branch for every separate change you intend to make.
|
|
80
84
|
|
81
85
|
Example:
|
82
86
|
|
83
|
-
|
87
|
+
```ruby
|
88
|
+
class SomeFunkyRecipe < Blazing::Recipe
|
84
89
|
|
85
|
-
|
86
|
-
|
87
|
-
|
90
|
+
def self.run
|
91
|
+
# do something
|
92
|
+
end
|
88
93
|
|
89
|
-
|
94
|
+
end
|
95
|
+
```
|
90
96
|
|
91
97
|
## Authors
|
92
98
|
|
data/Rakefile
CHANGED
data/bin/blazing
CHANGED
data/blazing.gemspec
CHANGED
data/lib/blazing/base.rb
CHANGED
@@ -1,18 +1,34 @@
|
|
1
|
+
require 'grit'
|
2
|
+
|
1
3
|
module Blazing
|
2
4
|
module Base
|
3
5
|
|
6
|
+
def config
|
7
|
+
@config ||= Blazing::Config.load
|
8
|
+
end
|
9
|
+
|
4
10
|
def log(type, message)
|
5
11
|
@logger ||= Blazing::Logger.new
|
6
12
|
@logger.log(type, message)
|
7
13
|
end
|
8
14
|
|
9
|
-
def config
|
10
|
-
@config ||= Blazing::Config.load
|
11
|
-
end
|
12
|
-
|
13
15
|
def report
|
14
16
|
@logger.report
|
15
17
|
end
|
16
18
|
|
19
|
+
#
|
20
|
+
# Helper that wraps exitstatus of cli stuff
|
21
|
+
#
|
22
|
+
def exit_status
|
23
|
+
@exit_status || $?.exitstatus
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Try to read the default remote
|
28
|
+
#
|
29
|
+
def repository_url
|
30
|
+
Grit::Repo.new(Dir.pwd).config['remote.origin.url'] || 'user@host:/some/path'
|
31
|
+
end
|
32
|
+
|
17
33
|
end
|
18
34
|
end
|
data/lib/blazing/cli/base.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'grit'
|
2
3
|
require 'blazing'
|
3
4
|
require 'blazing/logger'
|
4
5
|
require 'blazing/base'
|
@@ -13,7 +14,7 @@ module Blazing
|
|
13
14
|
|
14
15
|
desc 'init', 'prepare project for blazing deploys'
|
15
16
|
def init
|
16
|
-
@task ||= Blazing::CLI::Create.new
|
17
|
+
@task ||= Blazing::CLI::Create.new([repository_url])
|
17
18
|
@task.invoke_all
|
18
19
|
end
|
19
20
|
|
@@ -53,8 +54,7 @@ module Blazing
|
|
53
54
|
report
|
54
55
|
end
|
55
56
|
|
56
|
-
#TODO: move post_recevie and rvm somewhere else, they must only be called by the
|
57
|
-
# post-receive hook and not visible to user
|
57
|
+
#TODO: move post_recevie and rvm somewhere else, they must only be called by the post-receive hook and not visible to user
|
58
58
|
|
59
59
|
desc 'post_receive', 'trigger the post-receive actions'
|
60
60
|
def post_receive(target_name = nil)
|
@@ -68,12 +68,6 @@ module Blazing
|
|
68
68
|
log :info, Blazing::Remote.new(target.name).use_rvm?
|
69
69
|
report
|
70
70
|
end
|
71
|
-
|
72
|
-
private
|
73
|
-
|
74
|
-
def exit_status
|
75
|
-
@exit_status || $?.exitstatus
|
76
|
-
end
|
77
71
|
end
|
78
72
|
end
|
79
73
|
end
|
data/lib/blazing/cli/create.rb
CHANGED
@@ -8,6 +8,8 @@ module Blazing
|
|
8
8
|
|
9
9
|
desc 'create a blazing config file'
|
10
10
|
|
11
|
+
argument :repository
|
12
|
+
|
11
13
|
include Thor::Actions
|
12
14
|
include Blazing::Base
|
13
15
|
|
@@ -25,7 +27,6 @@ module Blazing
|
|
25
27
|
log :info, "Check the config and then setup your remote with blazing setup REMOTE"
|
26
28
|
report
|
27
29
|
end
|
28
|
-
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
data/lib/blazing/config.rb
CHANGED
@@ -12,14 +12,15 @@ module Blazing
|
|
12
12
|
def read(&block)
|
13
13
|
config = Blazing::Config.new
|
14
14
|
config.instance_eval(&block)
|
15
|
-
|
15
|
+
|
16
|
+
config
|
16
17
|
end
|
17
18
|
|
18
19
|
#
|
19
20
|
# Load configuration file and parse it
|
20
21
|
#
|
21
22
|
def load
|
22
|
-
|
23
|
+
read do
|
23
24
|
instance_eval(File.read(Blazing::CONFIGURATION_FILE))
|
24
25
|
end
|
25
26
|
end
|
data/lib/blazing/target.rb
CHANGED
@@ -6,24 +6,29 @@ module Blazing
|
|
6
6
|
|
7
7
|
attr_accessor :name, :recipes
|
8
8
|
|
9
|
-
AVAILABLE_SETTINGS = [:deploy_to, :host, :user, :path, :default]
|
9
|
+
AVAILABLE_SETTINGS = [:deploy_to, :host, :user, :path, :default, :branch]
|
10
10
|
|
11
11
|
def initialize(name, options = {})
|
12
12
|
@name = name.to_s
|
13
13
|
@logger = options[:_logger] ||= Blazing::Logger.new
|
14
14
|
@runner = options[:_runner] ||= Blazing::Runner.new
|
15
15
|
@hook = options[:_hook] ||= Blazing::CLI::Hook
|
16
|
-
|
16
|
+
create_accessors(options)
|
17
17
|
end
|
18
18
|
|
19
19
|
def setup
|
20
|
+
# TODO: Use a Wrapper to Net::SSH
|
21
|
+
#
|
20
22
|
clone_repository
|
23
|
+
checkout_correct_branch if @branch
|
21
24
|
add_target_as_remote
|
22
25
|
setup_post_receive_hook
|
23
26
|
end
|
24
27
|
|
25
28
|
def deploy
|
26
|
-
|
29
|
+
deploy_command = "git push #{name}"
|
30
|
+
deploy_command += " #{@branch}:#{@branch}" if @branch
|
31
|
+
@runner.run deploy_command
|
27
32
|
end
|
28
33
|
|
29
34
|
def config
|
@@ -31,7 +36,7 @@ module Blazing
|
|
31
36
|
@_config.load
|
32
37
|
end
|
33
38
|
|
34
|
-
def
|
39
|
+
def create_accessors(options)
|
35
40
|
assign_settings(options)
|
36
41
|
parse_deploy_to_string unless @deploy_to.blank?
|
37
42
|
ensure_mandatory_settings
|
@@ -64,6 +69,10 @@ module Blazing
|
|
64
69
|
git clone #{config.repository} #{@path} && cd #{@path} && git config receive.denyCurrentBranch ignore; fi"
|
65
70
|
end
|
66
71
|
|
72
|
+
def checkout_correct_branch
|
73
|
+
@runner.run "ssh #{@user}@#{@host} 'cd #{@path} && git checkout #{@branch}'" if @branch
|
74
|
+
end
|
75
|
+
|
67
76
|
def clone_repository
|
68
77
|
@runner.run "ssh #{@user}@#{@host} '#{clone_command}'"
|
69
78
|
end
|
data/lib/blazing/version.rb
CHANGED
@@ -6,7 +6,7 @@ describe Blazing::CLI::Create do
|
|
6
6
|
|
7
7
|
before :each do
|
8
8
|
@logger = double('logger', :log => nil, :report => nil)
|
9
|
-
@config_generator = Blazing::CLI::Create.new
|
9
|
+
@config_generator = Blazing::CLI::Create.new(['repository_url'])
|
10
10
|
@config_generator.instance_variable_set('@logger', @logger)
|
11
11
|
end
|
12
12
|
|
data/spec/blazing/target_spec.rb
CHANGED
@@ -66,25 +66,6 @@ describe Blazing::Target do
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
describe '#config' do
|
70
|
-
it 'delegates to Blazing::Config.load' do
|
71
|
-
blazing_config = double
|
72
|
-
target = Blazing::Target.new('somename', @options)
|
73
|
-
target.instance_variable_set("@_config", blazing_config)
|
74
|
-
blazing_config.should_receive(:load)
|
75
|
-
target.config
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
|
80
|
-
describe '#deploy' do
|
81
|
-
it 'uses git push to deploy to the target' do
|
82
|
-
target = Blazing::Target.new('somename', @options)
|
83
|
-
@runner.should_receive(:run).with(/git push somename/)
|
84
|
-
target.deploy
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
69
|
describe '#setup' do
|
89
70
|
before :each do
|
90
71
|
blazing_config = double('config', :load => Blazing::Config.new)
|
@@ -106,5 +87,36 @@ describe Blazing::Target do
|
|
106
87
|
@target.should_receive(:setup_post_receive_hook)
|
107
88
|
@target.setup
|
108
89
|
end
|
90
|
+
|
91
|
+
it 'checks out the correct branch if a branch is specified' do
|
92
|
+
@target.branch = 'test'
|
93
|
+
@target.should_receive(:checkout_correct_branch)
|
94
|
+
@target.setup
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '#deploy' do
|
99
|
+
it 'uses git push to deploy to the target' do
|
100
|
+
target = Blazing::Target.new('somename', @options)
|
101
|
+
@runner.should_receive(:run).with(/git push somename/)
|
102
|
+
target.deploy
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'pushes the correct branch when one is configured' do
|
106
|
+
target = Blazing::Target.new('somename', @options)
|
107
|
+
target.branch = 'somebranch'
|
108
|
+
@runner.should_receive(:run).with(/git push somename somebranch:somebranch/)
|
109
|
+
target.deploy
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '#config' do
|
114
|
+
it 'delegates to Blazing::Config.load' do
|
115
|
+
blazing_config = double
|
116
|
+
target = Blazing::Target.new('somename', @options)
|
117
|
+
target.instance_variable_set("@_config", blazing_config)
|
118
|
+
blazing_config.should_receive(:load)
|
119
|
+
target.config
|
120
|
+
end
|
109
121
|
end
|
110
122
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: blazing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.10
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Felipe Kaufmann
|
@@ -10,12 +10,10 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
13
|
+
date: 2011-07-15 00:00:00 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: thor
|
18
|
-
prerelease: false
|
19
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
19
|
requirements:
|
@@ -23,10 +21,10 @@ dependencies:
|
|
23
21
|
- !ruby/object:Gem::Version
|
24
22
|
version: 0.14.6
|
25
23
|
type: :runtime
|
24
|
+
prerelease: false
|
26
25
|
version_requirements: *id001
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: activesupport
|
29
|
-
prerelease: false
|
30
28
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
30
|
requirements:
|
@@ -34,10 +32,10 @@ dependencies:
|
|
34
32
|
- !ruby/object:Gem::Version
|
35
33
|
version: 3.0.5
|
36
34
|
type: :runtime
|
35
|
+
prerelease: false
|
37
36
|
version_requirements: *id002
|
38
37
|
- !ruby/object:Gem::Dependency
|
39
38
|
name: i18n
|
40
|
-
prerelease: false
|
41
39
|
requirement: &id003 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
41
|
requirements:
|
@@ -45,7 +43,19 @@ dependencies:
|
|
45
43
|
- !ruby/object:Gem::Version
|
46
44
|
version: "0"
|
47
45
|
type: :runtime
|
46
|
+
prerelease: false
|
48
47
|
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: grit
|
50
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *id004
|
49
59
|
description: git push deployent utility, ready to be extended by your own recipes
|
50
60
|
email:
|
51
61
|
- felipekaufmann@gmail.com
|
@@ -100,7 +110,6 @@ files:
|
|
100
110
|
- spec/blazing/target_spec.rb
|
101
111
|
- spec/spec_helper.rb
|
102
112
|
- spec/support/config.rb
|
103
|
-
has_rdoc: true
|
104
113
|
homepage: https://github.com/effkay/blazing
|
105
114
|
licenses: []
|
106
115
|
|
@@ -114,17 +123,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
123
|
requirements:
|
115
124
|
- - ">="
|
116
125
|
- !ruby/object:Gem::Version
|
126
|
+
hash: 1710367293229875195
|
127
|
+
segments:
|
128
|
+
- 0
|
117
129
|
version: "0"
|
118
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
131
|
none: false
|
120
132
|
requirements:
|
121
133
|
- - ">="
|
122
134
|
- !ruby/object:Gem::Version
|
135
|
+
hash: 1710367293229875195
|
136
|
+
segments:
|
137
|
+
- 0
|
123
138
|
version: "0"
|
124
139
|
requirements: []
|
125
140
|
|
126
141
|
rubyforge_project:
|
127
|
-
rubygems_version: 1.
|
142
|
+
rubygems_version: 1.7.2
|
128
143
|
signing_key:
|
129
144
|
specification_version: 3
|
130
145
|
summary: blazing fast deployment
|