blazing 0.0.16 → 0.1.0.alpha1
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/.gitignore +2 -0
- data/.rvmrc +1 -1
- data/Gemfile +0 -10
- data/Gemfile.lock +53 -44
- data/Guardfile +8 -0
- data/README.md +23 -99
- data/Rakefile +21 -4
- data/bin/blazing +23 -5
- data/blazing.gemspec +19 -8
- data/features/help_banner.feature +13 -0
- data/features/step_definitions/blazing_steps.rb +1 -0
- data/features/support/env.rb +9 -0
- data/lib/blazing.rb +4 -13
- data/lib/blazing/config.rb +38 -73
- data/lib/blazing/dsl_setter.rb +20 -0
- data/lib/blazing/recipe.rb +5 -78
- data/lib/blazing/runner.rb +44 -2
- data/lib/blazing/shell.rb +7 -0
- data/lib/blazing/target.rb +44 -134
- data/lib/blazing/templates/config.erb +21 -0
- data/lib/blazing/templates/hook.erb +43 -0
- data/lib/blazing/version.rb +1 -1
- data/spec/blazing/config_spec.rb +104 -48
- data/spec/blazing/integration/init_spec.rb +8 -37
- data/spec/blazing/integration/setup_local_spec.rb +27 -0
- data/spec/blazing/integration/setup_remote_spec.rb +32 -0
- data/spec/blazing/integration/update_spec.rb +38 -0
- data/spec/blazing/recipe_spec.rb +5 -66
- data/spec/blazing/runner_spec.rb +41 -6
- data/spec/blazing/target_spec.rb +26 -99
- data/spec/spec_helper.rb +18 -12
- data/spec/support/{config.rb → empty_config.rb} +0 -0
- metadata +170 -97
- data/TODO +0 -3
- data/lib/blazing/base.rb +0 -41
- data/lib/blazing/bootstrap.rb +0 -27
- data/lib/blazing/cli/base.rb +0 -64
- data/lib/blazing/cli/create.rb +0 -32
- data/lib/blazing/cli/hook.rb +0 -22
- data/lib/blazing/cli/templates/blazing.tt +0 -7
- data/lib/blazing/cli/templates/post-hook.tt +0 -25
- data/lib/blazing/core_ext/object.rb +0 -8
- data/lib/blazing/logger.rb +0 -31
- data/lib/blazing/recipes/bundler_recipe.rb +0 -20
- data/lib/blazing/recipes/rvm_recipe.rb +0 -11
- data/spec/blazing/binary_spec.rb +0 -11
- data/spec/blazing/cli/base_spec.rb +0 -94
- data/spec/blazing/cli/create_spec.rb +0 -27
- data/spec/blazing/cli/hook_spec.rb +0 -16
- data/spec/blazing/logger_spec.rb +0 -50
- data/spec/blazing/recipes/bundler_recipe_spec.rb +0 -32
- data/spec/blazing/recipes/passenger_recipe_spec.rb +0 -6
- data/spec/blazing/recipes/rvm_recipe_spec.rb +0 -11
- data/spec/blazing/remote_spec.rb +0 -136
data/.gitignore
CHANGED
data/.rvmrc
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# development environment upon cd'ing into the directory
|
5
5
|
|
6
6
|
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
|
7
|
-
environment_id="ruby-1.9.2
|
7
|
+
environment_id="ruby-1.9.2@blazing-rework"
|
8
8
|
|
9
9
|
#
|
10
10
|
# First we attempt to load the desired environment directly from the environment
|
data/Gemfile
CHANGED
@@ -2,13 +2,3 @@ source "http://rubygems.org"
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in blazing.gemspec
|
4
4
|
gemspec
|
5
|
-
|
6
|
-
gem 'rake', '0.8.7'
|
7
|
-
gem 'rspec'
|
8
|
-
gem 'ruby-debug19', :platforms => :ruby_19
|
9
|
-
gem 'ruby-debug', :platforms => :ruby_18
|
10
|
-
gem 'guard' , '0.4.0.rc'
|
11
|
-
gem 'guard-rspec'
|
12
|
-
gem 'growl'
|
13
|
-
gem 'simplecov', '>= 0.4.0', :require => false, :group => :test, :platforms => :ruby_19
|
14
|
-
gem 'rb-fsevent'
|
data/Gemfile.lock
CHANGED
@@ -1,73 +1,82 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
blazing (0.0.
|
5
|
-
activesupport
|
4
|
+
blazing (0.1.0.alpha1)
|
5
|
+
activesupport
|
6
6
|
grit
|
7
7
|
i18n
|
8
|
-
|
8
|
+
methadone
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: http://rubygems.org/
|
12
12
|
specs:
|
13
|
-
activesupport (3.
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
activesupport (3.1.1)
|
14
|
+
multi_json (~> 1.0)
|
15
|
+
aruba (0.4.6)
|
16
|
+
bcat (>= 0.6.1)
|
17
|
+
childprocess (>= 0.2.0)
|
18
|
+
cucumber (>= 1.0.2)
|
19
|
+
rdiscount (>= 1.6.8)
|
20
|
+
rspec (>= 2.6.0)
|
21
|
+
bcat (0.6.2)
|
22
|
+
rack (~> 1.0)
|
23
|
+
builder (3.0.0)
|
24
|
+
childprocess (0.2.2)
|
25
|
+
ffi (~> 1.0.6)
|
26
|
+
cucumber (1.1.0)
|
27
|
+
builder (>= 2.1.2)
|
28
|
+
diff-lcs (>= 1.1.2)
|
29
|
+
gherkin (~> 2.5.0)
|
30
|
+
json (>= 1.4.6)
|
31
|
+
term-ansicolor (>= 1.0.6)
|
32
|
+
diff-lcs (1.1.3)
|
33
|
+
ffi (1.0.9)
|
34
|
+
gherkin (2.5.2)
|
35
|
+
json (>= 1.4.6)
|
17
36
|
grit (2.4.1)
|
18
37
|
diff-lcs (~> 1.1)
|
19
38
|
mime-types (~> 1.15)
|
20
39
|
growl (1.0.3)
|
21
|
-
guard (0.4
|
40
|
+
guard (0.8.4)
|
22
41
|
thor (~> 0.14.6)
|
23
|
-
guard-
|
24
|
-
|
42
|
+
guard-cucumber (0.7.3)
|
43
|
+
cucumber (>= 0.10)
|
44
|
+
guard (>= 0.8.3)
|
45
|
+
guard-rspec (0.5.0)
|
46
|
+
guard (>= 0.8.4)
|
25
47
|
i18n (0.6.0)
|
26
|
-
|
27
|
-
|
28
|
-
ruby_core_source (>= 0.1.4)
|
48
|
+
json (1.6.1)
|
49
|
+
methadone (0.3.0)
|
29
50
|
mime-types (1.16)
|
30
|
-
|
51
|
+
multi_json (1.0.3)
|
52
|
+
rack (1.3.4)
|
53
|
+
rake (0.9.2)
|
31
54
|
rb-fsevent (0.4.0)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
55
|
+
rdiscount (1.6.8)
|
56
|
+
rdoc (3.10)
|
57
|
+
json (~> 1.4)
|
58
|
+
rspec (2.6.0)
|
59
|
+
rspec-core (~> 2.6.0)
|
60
|
+
rspec-expectations (~> 2.6.0)
|
61
|
+
rspec-mocks (~> 2.6.0)
|
62
|
+
rspec-core (2.6.4)
|
63
|
+
rspec-expectations (2.6.0)
|
38
64
|
diff-lcs (~> 1.1.2)
|
39
|
-
rspec-mocks (2.
|
40
|
-
|
41
|
-
columnize (>= 0.1)
|
42
|
-
ruby-debug-base (~> 0.10.4.0)
|
43
|
-
ruby-debug-base (0.10.4)
|
44
|
-
linecache (>= 0.3)
|
45
|
-
ruby-debug-base19 (0.11.25)
|
46
|
-
columnize (>= 0.3.1)
|
47
|
-
linecache19 (>= 0.5.11)
|
48
|
-
ruby_core_source (>= 0.1.4)
|
49
|
-
ruby-debug19 (0.11.6)
|
50
|
-
columnize (>= 0.3.1)
|
51
|
-
linecache19 (>= 0.5.11)
|
52
|
-
ruby-debug-base19 (>= 0.11.19)
|
53
|
-
ruby_core_source (0.1.5)
|
54
|
-
archive-tar-minitar (>= 0.5.2)
|
55
|
-
simplecov (0.4.2)
|
56
|
-
simplecov-html (~> 0.4.4)
|
57
|
-
simplecov-html (0.4.4)
|
65
|
+
rspec-mocks (2.6.0)
|
66
|
+
term-ansicolor (1.0.7)
|
58
67
|
thor (0.14.6)
|
59
68
|
|
60
69
|
PLATFORMS
|
61
70
|
ruby
|
62
71
|
|
63
72
|
DEPENDENCIES
|
73
|
+
aruba
|
64
74
|
blazing!
|
65
75
|
growl
|
66
|
-
guard
|
76
|
+
guard
|
77
|
+
guard-cucumber
|
67
78
|
guard-rspec
|
68
|
-
rake (
|
79
|
+
rake (~> 0.9.2)
|
69
80
|
rb-fsevent
|
81
|
+
rdoc
|
70
82
|
rspec
|
71
|
-
ruby-debug
|
72
|
-
ruby-debug19
|
73
|
-
simplecov (>= 0.4.0)
|
data/Guardfile
CHANGED
@@ -6,4 +6,12 @@ guard 'rspec', :version => 2, :cli => "--colour --fail-fast --format nested" do
|
|
6
6
|
watch(%r{^lib/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
|
7
7
|
watch(%r{^lib/blazing/(.+)\.rb}) { |m| "spec/blazing/#{m[1]}_spec.rb" }
|
8
8
|
watch('spec/spec_helper.rb') { "spec" }
|
9
|
+
watch(%r{^lib/blazing/templates/(.+)}) { "spec" }
|
10
|
+
watch('lib/blazing/runner.rb') { "spec/blazing/integration/*" }
|
11
|
+
end
|
12
|
+
|
13
|
+
guard 'cucumber' do
|
14
|
+
watch(%r{^features/.+\.feature$})
|
15
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
16
|
+
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
9
17
|
end
|
data/README.md
CHANGED
@@ -1,122 +1,46 @@
|
|
1
|
-
|
2
|
-
=============================================
|
1
|
+
[](http://travis-ci.org/effkay/blazing)
|
3
2
|
|
4
|
-
|
3
|
+
# Blazing fast git push deploys
|
5
4
|
|
6
|
-
##
|
5
|
+
## Overview
|
7
6
|
|
8
|
-
|
9
|
-
applications. It may work for other frameworks, but it is mainly
|
10
|
-
designed to deploy Ruby on Rails and Rack based applications, as well as
|
11
|
-
static sites.
|
7
|
+
## Installation
|
12
8
|
|
13
|
-
|
9
|
+
## Usage
|
14
10
|
|
15
|
-
|
16
|
-
* initial setup done by ruby script, so unexerpienced users do not
|
17
|
-
have to fiddle with the git config files
|
18
|
-
* clean API for writing your own recipes, no messy rake file jungles
|
19
|
-
* DRY, clean and minimal configuration file
|
20
|
-
* blazing fast!
|
11
|
+
## Development & Contribution
|
21
12
|
|
22
|
-
|
13
|
+
### Improving Blazing itself
|
23
14
|
|
24
|
-
|
25
|
-
cover most of my needs and the needs we had at [Screen
|
26
|
-
Concept](http://www.screenconcept.ch). After a short while I noticed
|
27
|
-
that bolting more functionality on top of capistrano was just going to
|
28
|
-
be messy (and a PTA to maintain). We were alerady using tons of own recipes and customizations,
|
29
|
-
capistrano multistage, capistrano-ext, etc.
|
15
|
+
### Blazing Recipes
|
30
16
|
|
31
|
-
|
32
|
-
around and not getting what I wanted, I started this.
|
17
|
+
## Contribution
|
33
18
|
|
34
|
-
|
19
|
+
## TODO
|
35
20
|
|
36
|
-
|
37
|
-
years. Then got inspired by defunkt's
|
38
|
-
[blog post](https://github.com/blog/470-deployment-script-spring-cleaning) about deployment script spring cleaning. Other's doing a similar thing with git push deployments are Mislav's [git-deploy](https://github.com/mislav/git-deploy) and [pushand](https://github.com/remi/pushand.git) by remi.
|
21
|
+
###0.1 alpha:
|
39
22
|
|
40
|
-
|
23
|
+
* implement hook
|
41
24
|
|
42
|
-
|
25
|
+
* implement recipes
|
43
26
|
|
44
|
-
|
27
|
+
* checkout branch specified when deploying (i.e git push production
|
28
|
+
some_feature_branch should checkout some_feature_branch on prod target)
|
45
29
|
|
46
|
-
|
47
|
-
such systems.
|
30
|
+
* handle target as argument in runner
|
48
31
|
|
49
|
-
|
32
|
+
* finish readme
|
50
33
|
|
51
|
-
|
52
|
-
repository 'git@github.com:someones/repository.git'
|
34
|
+
### Later
|
53
35
|
|
54
|
-
|
55
|
-
|
36
|
+
* recipes with options
|
37
|
+
* read origin and set it as repository automatically
|
38
|
+
* allow to set deployed branch in config
|
39
|
+
* handle local deployment
|
56
40
|
|
57
|
-
target :stagigng, :deploy_to => 'user@hostname:/path/to/target', :default => true
|
58
|
-
target :production, :deploy_to => 'user@somehostname:/path/to/target'
|
59
|
-
...
|
60
|
-
```
|
61
|
-
|
62
|
-
## Deploying
|
63
|
-
|
64
|
-
```bash
|
65
|
-
blazing deploy <target_name>
|
66
|
-
```
|
67
|
-
|
68
|
-
Or, if everyting is already set up on the remote etc. you can acutally
|
69
|
-
just do a git push to your target name.
|
70
|
-
|
71
|
-
## Development
|
72
|
-
|
73
|
-
Report Issues/Questions/Feature requests on [GitHub
|
74
|
-
Issues](http://github.com/effkay/blazing/issues)
|
75
|
-
|
76
|
-
### Extending / Fixing Blazing itself
|
77
|
-
|
78
|
-
Pull requests are very welcome as long as they are well tested. Please
|
79
|
-
create a topic branch for every separate change you intend to make.
|
80
|
-
|
81
|
-
### Developing Blazing Extensions
|
82
|
-
|
83
|
-
**(Still work in progress and not a stable API yet)**
|
84
|
-
|
85
|
-
Example:
|
86
|
-
|
87
|
-
```ruby
|
88
|
-
class SomeFunkyRecipe < Blazing::Recipe
|
89
|
-
|
90
|
-
def self.run
|
91
|
-
# do something
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
```
|
96
41
|
|
97
42
|
## Authors
|
98
43
|
|
99
|
-
[Felipe Kaufmann](http://github.com/effkay)
|
100
|
-
|
101
44
|
## License
|
102
45
|
|
103
|
-
|
104
|
-
|
105
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
106
|
-
a copy of this software and associated documentation files (the
|
107
|
-
"Software"), to deal in the Software without restriction, including
|
108
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
109
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
110
|
-
permit persons to whom the Software is furnished to do so, subject to
|
111
|
-
the following conditions:
|
112
|
-
|
113
|
-
The above copyright notice and this permission notice shall be
|
114
|
-
included in all copies or substantial portions of the Software.
|
115
|
-
|
116
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
117
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
118
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
119
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
120
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
121
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
122
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
46
|
+
See the `MIT-LICENSE` file
|
data/Rakefile
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
require 'bundler'
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
require 'rake/clean'
|
3
|
+
require 'cucumber'
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
require 'rdoc/task'
|
5
6
|
require 'rspec/core/rake_task'
|
6
7
|
|
8
|
+
include Rake::DSL
|
9
|
+
|
10
|
+
Bundler::GemHelper.install_tasks
|
11
|
+
|
7
12
|
desc "Run specs"
|
8
13
|
RSpec::Core::RakeTask.new do |t|
|
9
14
|
# t.rspec_opts = %w(--colour --fail-fast --format nested)
|
@@ -11,4 +16,16 @@ RSpec::Core::RakeTask.new do |t|
|
|
11
16
|
t.ruby_opts = %w(-w)
|
12
17
|
end
|
13
18
|
|
14
|
-
|
19
|
+
CUKE_RESULTS = 'results.html'
|
20
|
+
CLEAN << CUKE_RESULTS
|
21
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
22
|
+
t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
|
23
|
+
t.fork = false
|
24
|
+
end
|
25
|
+
|
26
|
+
Rake::RDocTask.new do |rd|
|
27
|
+
rd.main = "README.rdoc"
|
28
|
+
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
29
|
+
end
|
30
|
+
|
31
|
+
task :default => [:spec,:features]
|
data/bin/blazing
CHANGED
@@ -1,11 +1,29 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
1
|
+
#!/usr/bin/env ruby -w
|
2
2
|
|
3
3
|
require 'bundler'
|
4
4
|
Bundler.setup
|
5
5
|
|
6
|
-
require '
|
7
|
-
require '
|
6
|
+
require 'optparse'
|
7
|
+
require 'methadone'
|
8
8
|
require 'blazing'
|
9
|
-
require 'blazing/
|
9
|
+
require 'blazing/config'
|
10
|
+
require 'blazing/runner'
|
10
11
|
|
11
|
-
|
12
|
+
include Methadone::Main
|
13
|
+
|
14
|
+
main do |command, target|
|
15
|
+
if command == 'init'
|
16
|
+
config = nil
|
17
|
+
else
|
18
|
+
config = Blazing::Config.parse(options[:file])
|
19
|
+
end
|
20
|
+
|
21
|
+
runner = Blazing::Runner.new(config, target)
|
22
|
+
runner.exec(command)
|
23
|
+
end
|
24
|
+
|
25
|
+
arg :command
|
26
|
+
arg :target, :optional
|
27
|
+
on("-f configuration", "--file configuration", "config file location (defaults to config/blazing.rb)")
|
28
|
+
|
29
|
+
go!
|
data/blazing.gemspec
CHANGED
@@ -5,24 +5,35 @@ require "blazing/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "blazing"
|
7
7
|
s.version = Blazing::VERSION
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
8
|
s.authors = ["Felipe Kaufmann"]
|
10
9
|
s.email = ["felipekaufmann@gmail.com"]
|
11
10
|
s.homepage = "https://github.com/effkay/blazing"
|
12
11
|
s.summary = %q{blazing fast deployment}
|
13
12
|
s.description = %q{git push deployent utility, ready to be extended by your own recipes}
|
13
|
+
|
14
|
+
s.rubyforge_project = "blazing"
|
15
|
+
|
14
16
|
s.files = `git ls-files`.split("\n")
|
15
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
-
|
17
|
-
s.executables = ["blazing"]
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
19
|
s.require_paths = ["lib"]
|
19
20
|
|
20
|
-
#
|
21
|
-
s.
|
22
|
-
s.
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
24
|
+
s.add_development_dependency('rdoc')
|
25
|
+
s.add_development_dependency('aruba')
|
26
|
+
s.add_development_dependency('rake','~> 0.9.2')
|
27
|
+
s.add_development_dependency('rspec')
|
28
|
+
s.add_development_dependency('guard')
|
29
|
+
s.add_development_dependency('guard-rspec')
|
30
|
+
s.add_development_dependency('guard-cucumber')
|
31
|
+
s.add_development_dependency('growl')
|
32
|
+
s.add_development_dependency('rb-fsevent')
|
33
|
+
s.add_dependency('methadone')
|
34
|
+
s.add_dependency('grit')
|
23
35
|
|
24
36
|
# TODO: Get rid of those, just used for guessing recipe names etc in lib/recipes.rb
|
25
|
-
s.add_dependency "activesupport"
|
37
|
+
s.add_dependency "activesupport"
|
26
38
|
s.add_dependency "i18n"
|
27
|
-
|
28
39
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Feature: Help Banner
|
2
|
+
In order to know what this gem does
|
3
|
+
I want to see the help banner
|
4
|
+
|
5
|
+
Scenario: Run blazing --help
|
6
|
+
When I get help for "blazing"
|
7
|
+
Then the exit status should be 0
|
8
|
+
And the banner should be present
|
9
|
+
|
10
|
+
Scenario:
|
11
|
+
When I run `blazing`
|
12
|
+
Then the exit status should not be 0
|
13
|
+
And the output should contain "'command' is required"
|
@@ -0,0 +1 @@
|
|
1
|
+
# Put your step defintions here
|