blazing 0.1.0.alpha1 → 0.1.0.alpha2
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/Gemfile.lock +0 -2
- data/Guardfile +0 -6
- data/README.md +59 -19
- data/Rakefile +1 -10
- data/bin/blazing +23 -14
- data/blazing.gemspec +0 -3
- data/lib/blazing/cli_logger.rb +114 -0
- data/lib/blazing/cli_logging.rb +58 -0
- data/lib/blazing/runner.rb +3 -3
- data/lib/blazing/version.rb +1 -1
- data/spec/blazing/integration/init_spec.rb +1 -1
- data/spec/spec_helper.rb +4 -2
- metadata +151 -135
- data/features/help_banner.feature +0 -13
- data/features/step_definitions/blazing_steps.rb +0 -1
- data/features/support/env.rb +0 -9
data/Gemfile.lock
CHANGED
data/Guardfile
CHANGED
@@ -9,9 +9,3 @@ guard 'rspec', :version => 2, :cli => "--colour --fail-fast --format nested" do
|
|
9
9
|
watch(%r{^lib/blazing/templates/(.+)}) { "spec" }
|
10
10
|
watch('lib/blazing/runner.rb') { "spec/blazing/integration/*" }
|
11
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' }
|
17
|
-
end
|
data/README.md
CHANGED
@@ -1,46 +1,86 @@
|
|
1
1
|
[](http://travis-ci.org/effkay/blazing)
|
2
2
|
|
3
|
-
# Blazing fast git push deploys
|
3
|
+
# Blazing fast and painless git push deploys
|
4
4
|
|
5
|
-
|
5
|
+
*Oh no, yet another deployer!*
|
6
|
+
|
7
|
+
Not everyone can or wants to deploy on heroku. But now you can have the same awesomely smooth git push deploys on whatever server you have SSH access to.
|
8
|
+
|
9
|
+
## Quickstart
|
10
|
+
|
11
|
+
`blazing init`, edit the configuration, run `blazing setup:local` and `blazing setup:remote <target>` and you're set. Deploy with `git push <target> <branch>` or setup git to always push your current branch.
|
12
|
+
|
13
|
+
## Overview & Background
|
14
|
+
|
15
|
+
Blazing is a deployment tool written in Ruby. It provides helpers to setup your project with a git post-receive hook, which is triggered every time you push to your production repository.
|
16
|
+
|
17
|
+
I initially started working on an extension to capistrano which would cover most of my needs and the nees of my team. After a short while I noticed that bolting more functionality on top of capistrano was just going to be messy (and a PTA to maintain). We were alerady using tons of own recipes and customizations, capistrano multistage, capistrano-ext, etc.
|
18
|
+
|
19
|
+
I had a look at what others were doing and after a round of trying around and not getting what I wanted, I started this.
|
20
|
+
|
21
|
+
## Design Goals
|
22
|
+
|
23
|
+
When I started working on blazing, I had some design goals in mind which I think should stay relevant for this project:
|
24
|
+
|
25
|
+
- it must be well tested
|
26
|
+
- it must stay robust, simple and with small code base with as few moving parts as possible. Minimum code in the main project, extensions live outside.
|
27
|
+
- no messy rake scripts: Define the desired behavior trough a DSL, and extensions add to this DSL in a clean and modular way
|
28
|
+
- Deployments should be fast
|
29
|
+
|
30
|
+
### Inspiration & Alternatives
|
31
|
+
|
32
|
+
I looked at [Inploy](https://github.com/dcrec1/inploy) and [Vlad](https://github.com/seattlerb/vlad) after having used [Capistrano](https://github.com/capistrano/capistrano) for several
|
33
|
+
years. Then got inspired by defunkt's
|
34
|
+
[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. If you don't like blazing, you might give them a try.
|
6
35
|
|
7
36
|
## Installation
|
8
37
|
|
38
|
+
Your machine should be setup with ruby, rubygems, bundler and git. Install blazing by adding it to your `Gemfile` or run `gem install blazing`. The basic assumption from now on will be that you are working on a project with bundler and a Gemfile. Support for other ways to handle dependencies might be added in the future.
|
39
|
+
|
9
40
|
## Usage
|
10
41
|
|
11
|
-
|
42
|
+
### Init
|
12
43
|
|
13
|
-
|
44
|
+
Run `blazing init` in your project root to create a sample config file.
|
14
45
|
|
15
|
-
###
|
46
|
+
### Configuration
|
47
|
+
|
48
|
+
See the generated configuration file or [the template file](https://github.com/effkay/blazing/blob/master/lib/blazing/templates/config.erb) for availabel configuration options.
|
49
|
+
|
50
|
+
### Setup
|
51
|
+
|
52
|
+
`blazing setup:local` will setup your local repository for deployment with blazing/git push. Basically, it will add a remote for each target you defined in the configuration file.
|
16
53
|
|
17
|
-
|
54
|
+
`blazing setup:remote <target>` will setup the project on the server side. It will:
|
18
55
|
|
19
|
-
|
56
|
+
* clone the repository to the specified location
|
57
|
+
* setup the repository to allow a currently checked out branch to be pushed to it
|
58
|
+
* run ``blazing update``
|
20
59
|
|
21
|
-
|
60
|
+
`blazing update <target>`
|
22
61
|
|
23
|
-
|
62
|
+
Whenever you change something in your blazing config file you can run the update command so your git post-receive hook gets updated.
|
24
63
|
|
25
|
-
|
64
|
+
### Deploying
|
26
65
|
|
27
|
-
|
28
|
-
some_feature_branch should checkout some_feature_branch on prod target)
|
66
|
+
Just push to your remote… so if you set up a target named `:production`, use `git push production master` to deploy your master branch there.
|
29
67
|
|
30
|
-
|
68
|
+
## Development & Contribution
|
31
69
|
|
32
|
-
|
70
|
+
### Improving Blazing itself
|
33
71
|
|
34
|
-
|
72
|
+
If you like blazing and want to improve/fix something, feel free, I'm glad for every pull request. Maybe contact me beforehand so we don't fix the same bugs twice and make sure you stick with a similar code style and have tests in your pull request.
|
35
73
|
|
36
|
-
|
37
|
-
* read origin and set it as repository automatically
|
38
|
-
* allow to set deployed branch in config
|
39
|
-
* handle local deployment
|
74
|
+
### Blazing Recipes
|
40
75
|
|
76
|
+
I would like to add recipes that encapuslate common deployment strategies to blazing. If you have an idea for that, you are welcome to contribute. Right now I am still working on a clever API for this so no futher documentation yet.
|
41
77
|
|
42
78
|
## Authors
|
43
79
|
|
80
|
+
Felipe Kaufmann ([@effkay][])
|
81
|
+
|
44
82
|
## License
|
45
83
|
|
46
84
|
See the `MIT-LICENSE` file
|
85
|
+
|
86
|
+
[@effkay]: https://github.com/effkay
|
data/Rakefile
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
require 'rake/clean'
|
3
|
-
require 'cucumber'
|
4
|
-
require 'cucumber/rake/task'
|
5
3
|
require 'rdoc/task'
|
6
4
|
require 'rspec/core/rake_task'
|
7
5
|
|
@@ -16,16 +14,9 @@ RSpec::Core::RakeTask.new do |t|
|
|
16
14
|
t.ruby_opts = %w(-w)
|
17
15
|
end
|
18
16
|
|
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
17
|
Rake::RDocTask.new do |rd|
|
27
18
|
rd.main = "README.rdoc"
|
28
19
|
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
29
20
|
end
|
30
21
|
|
31
|
-
task :default => [:spec
|
22
|
+
task :default => [:spec]
|
data/bin/blazing
CHANGED
@@ -3,27 +3,36 @@
|
|
3
3
|
require 'bundler'
|
4
4
|
Bundler.setup
|
5
5
|
|
6
|
-
require 'optparse'
|
7
|
-
require 'methadone'
|
8
6
|
require 'blazing'
|
9
7
|
require 'blazing/config'
|
10
8
|
require 'blazing/runner'
|
9
|
+
require 'optparse'
|
11
10
|
|
12
|
-
|
11
|
+
options = {}
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
optparse = OptionParser.new do|opts|
|
14
|
+
opts.banner = "Usage: blazing <command> [options]"
|
15
|
+
|
16
|
+
opts.on( '-h', '--help', 'Display this screen' ) do
|
17
|
+
puts opts
|
18
|
+
exit
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
opts.on( '-f config', '--file config', 'specify config file location (defaults to config/blazing.rb)' ) do |file|
|
22
|
+
options[:file] = file
|
23
|
+
end
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
26
|
+
optparse.parse!(ARGV)
|
27
|
+
|
28
|
+
command = ARGV[0]
|
29
|
+
target = ARGV[1]
|
30
|
+
|
31
|
+
if command == 'init'
|
32
|
+
config = nil
|
33
|
+
else
|
34
|
+
config = Blazing::Config.parse(options[:file])
|
35
|
+
end
|
28
36
|
|
29
|
-
|
37
|
+
runner = Blazing::Runner.new(config, target)
|
38
|
+
runner.exec(command)
|
data/blazing.gemspec
CHANGED
@@ -22,15 +22,12 @@ Gem::Specification.new do |s|
|
|
22
22
|
# s.add_development_dependency "rspec"
|
23
23
|
# s.add_runtime_dependency "rest-client"
|
24
24
|
s.add_development_dependency('rdoc')
|
25
|
-
s.add_development_dependency('aruba')
|
26
25
|
s.add_development_dependency('rake','~> 0.9.2')
|
27
26
|
s.add_development_dependency('rspec')
|
28
27
|
s.add_development_dependency('guard')
|
29
28
|
s.add_development_dependency('guard-rspec')
|
30
|
-
s.add_development_dependency('guard-cucumber')
|
31
29
|
s.add_development_dependency('growl')
|
32
30
|
s.add_development_dependency('rb-fsevent')
|
33
|
-
s.add_dependency('methadone')
|
34
31
|
s.add_dependency('grit')
|
35
32
|
|
36
33
|
# TODO: Get rid of those, just used for guessing recipe names etc in lib/recipes.rb
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#
|
2
|
+
# Borrowed from: https://raw.github.com/davetron5000/methadone/master/lib/methadone/cli_logging.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
|
7
|
+
module Blazing
|
8
|
+
# A Logger instance that gives better control of messaging the user
|
9
|
+
# and logging app activity. At it's most basic, you would use
|
10
|
+
# #info as a replacement for +puts+ and #error as a replacement
|
11
|
+
# for <tt>STDERR.puts</tt>. Since this is a logger, however, you
|
12
|
+
# can also use #debug, #warn, and #fatal, and you can control
|
13
|
+
# the format and "logging level" as such.
|
14
|
+
#
|
15
|
+
# So, by default:
|
16
|
+
# * #debug messages do not appear anywhere
|
17
|
+
# * #info messages appear on the standard output
|
18
|
+
# * #warn, #error, and #fata messagse appear on the standard error
|
19
|
+
# * The default format of messages is simply the message, no logging cruft
|
20
|
+
#
|
21
|
+
# You can customize this in several ways:
|
22
|
+
#
|
23
|
+
# * You can override the devices used by passing different devices to the constructor
|
24
|
+
# * You can adjust the level of message that goes to the error logger via error_level=
|
25
|
+
# * You can adjust the format for messages to the error logger separately via error_formatter=
|
26
|
+
#
|
27
|
+
# === Example
|
28
|
+
#
|
29
|
+
# logger = CLILogger.new
|
30
|
+
# logger.debug("Starting up") # => only the standard output gets this
|
31
|
+
# logger.warn("careful!") # => only the standard error gets this
|
32
|
+
# logger.error("Something went wrong!") # => only the standard error gets this
|
33
|
+
#
|
34
|
+
# logger = CLILogger.new
|
35
|
+
# logger.error_level = Logger::ERROR
|
36
|
+
# logger.debug("Starting up") # => only the standard output gets this
|
37
|
+
# logger.warn("careful!") # => only the standard OUTPUT gets this
|
38
|
+
# logger.error("Something went wrong!") # => only the standard error gets this
|
39
|
+
#
|
40
|
+
# logger = CLILogger.new('logfile.txt')
|
41
|
+
# logger.debug("Starting up") # => logfile.txt gets this
|
42
|
+
# logger.error("Something went wrong!") # => BOTH logfile.txt AND the standard error get this
|
43
|
+
class CLILogger < Logger
|
44
|
+
BLANK_FORMAT = proc { |severity,datetime,progname,msg|
|
45
|
+
msg + "\n"
|
46
|
+
}
|
47
|
+
|
48
|
+
# Helper to proxy methods to the super class AND to the internal error logger
|
49
|
+
#
|
50
|
+
# +symbol+:: Symbol for name of the method to proxy
|
51
|
+
def self.proxy_method(symbol) #:nodoc:
|
52
|
+
old_name = "old_#{symbol}".to_sym
|
53
|
+
alias_method old_name,symbol
|
54
|
+
define_method symbol do |*args,&block|
|
55
|
+
send(old_name,*args,&block)
|
56
|
+
@stderr_logger.send(symbol,*args,&block)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
proxy_method :'formatter='
|
61
|
+
proxy_method :'datetime_format='
|
62
|
+
|
63
|
+
def add(severity, message = nil, progname = nil, &block) #:nodoc:
|
64
|
+
if @split_logs
|
65
|
+
unless severity >= @stderr_logger.level
|
66
|
+
super(severity,message,progname,&block)
|
67
|
+
end
|
68
|
+
else
|
69
|
+
super(severity,message,progname,&block)
|
70
|
+
end
|
71
|
+
@stderr_logger.add(severity,message,progname,&block)
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# A logger that logs error-type messages to a second device; useful
|
76
|
+
# for ensuring that error messages go to standard error. This should be
|
77
|
+
# pretty smart about doing the right thing. If both log devices are
|
78
|
+
# ttys, e.g. one is going to standard error and the other to the standard output,
|
79
|
+
# messages only appear once in the overall output stream. In other words,
|
80
|
+
# an ERROR logged will show up *only* in the standard error. If either
|
81
|
+
# log device is NOT a tty, then all messages go to +log_device+ and only
|
82
|
+
# errors go to +error_device+
|
83
|
+
#
|
84
|
+
# +log_device+:: device where all log messages should go, based on level
|
85
|
+
# +error_device+:: device where all error messages should go. By default, this is Logger::Severity::WARN
|
86
|
+
def initialize(log_device=$stdout,error_device=$stderr)
|
87
|
+
super(log_device)
|
88
|
+
@split_logs = log_device.tty? && error_device.tty?
|
89
|
+
self.level = Logger::Severity::INFO
|
90
|
+
@stderr_logger = Logger.new(error_device)
|
91
|
+
@stderr_logger.level = Logger::Severity::WARN
|
92
|
+
self.formatter = BLANK_FORMAT if log_device.tty?
|
93
|
+
@stderr_logger.formatter = BLANK_FORMAT if error_device.tty?
|
94
|
+
end
|
95
|
+
|
96
|
+
# Set the threshold for what messages go to the error device. Note that calling
|
97
|
+
# #level= will *not* affect the error logger
|
98
|
+
#
|
99
|
+
# +level+:: a constant from Logger::Severity for the level of messages that should go
|
100
|
+
# to the error logger
|
101
|
+
def error_level=(level)
|
102
|
+
@stderr_logger.level = level
|
103
|
+
end
|
104
|
+
|
105
|
+
# Overrides the formatter for the error logger. A future call to #formatter= will
|
106
|
+
# affect both, so the order of the calls matters.
|
107
|
+
#
|
108
|
+
# +formatter+:: Proc that handles the formatting, the same as for #formatter=
|
109
|
+
def error_formatter=(formatter)
|
110
|
+
@stderr_logger.formatter=formatter
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#
|
2
|
+
# Borrowed from: https://raw.github.com/davetron5000/methadone/master/lib/methadone/cli_logging.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
require 'blazing/cli_logger'
|
6
|
+
|
7
|
+
module Blazing
|
8
|
+
# Provides easier access to a shared Methadone::CLILogger instance.
|
9
|
+
#
|
10
|
+
# Include this module into your class, and #logger provides access to a shared logger.
|
11
|
+
# This is handy if you want all of your clases to have access to the same logger, but
|
12
|
+
# don't want to (or aren't able to) pass it around to each class.
|
13
|
+
#
|
14
|
+
# This also provides methods for direct logging without going through the #logger
|
15
|
+
#
|
16
|
+
# === Example
|
17
|
+
#
|
18
|
+
# class MyClass
|
19
|
+
# include Methadone::CLILogger
|
20
|
+
#
|
21
|
+
# def doit
|
22
|
+
# debug("About to doit!")
|
23
|
+
# if results
|
24
|
+
# info("We did it!"
|
25
|
+
# else
|
26
|
+
# error("Something went wrong")
|
27
|
+
# end
|
28
|
+
# debug("Done doing it")
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
module CLILogging
|
32
|
+
# Access the shared logger. All classes that include this module
|
33
|
+
# will get the same logger via this method.
|
34
|
+
def logger
|
35
|
+
@@logger ||= Blazing::CLILogger.new
|
36
|
+
end
|
37
|
+
|
38
|
+
# Change the global logger that includers will use. Useful if you
|
39
|
+
# don't want the default configured logger.
|
40
|
+
#
|
41
|
+
# +new_logger+:: the new logger. May not be nil and should be a a logger of some kind
|
42
|
+
def logger=(new_logger)
|
43
|
+
raise ArgumentError,"Logger may not be nil" if new_logger.nil?
|
44
|
+
@@logger = new_logger
|
45
|
+
end
|
46
|
+
|
47
|
+
# pass-through to <tt>logger.debug(progname,&block)</tt>
|
48
|
+
def debug(progname = nil, &block); logger.debug(progname,&block); end
|
49
|
+
# pass-through to <tt>logger.info(progname,&block)</tt>
|
50
|
+
def info(progname = nil, &block); logger.info(progname,&block); end
|
51
|
+
# pass-through to <tt>logger.warn(progname,&block)</tt>
|
52
|
+
def warn(progname = nil, &block); logger.warn(progname,&block); end
|
53
|
+
# pass-through to <tt>logger.error(progname,&block)</tt>
|
54
|
+
def error(progname = nil, &block); logger.error(progname,&block); end
|
55
|
+
# pass-through to <tt>logger.fatal(progname,&block)</tt>
|
56
|
+
def fatal(progname = nil, &block); logger.fatal(progname,&block); end
|
57
|
+
end
|
58
|
+
end
|
data/lib/blazing/runner.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'erb'
|
2
|
-
require '
|
2
|
+
require 'blazing/cli_logging'
|
3
3
|
|
4
4
|
class Blazing::Runner
|
5
5
|
|
6
|
-
include
|
6
|
+
include Blazing::CLILogging
|
7
7
|
|
8
8
|
def initialize(config = nil, target = nil)
|
9
9
|
if config
|
@@ -22,7 +22,7 @@ class Blazing::Runner
|
|
22
22
|
info("Creating an example config file in #{Blazing::DEFAULT_CONFIG_LOCATION}")
|
23
23
|
info("Customize it to your needs")
|
24
24
|
|
25
|
-
Dir.mkdir 'config' unless
|
25
|
+
Dir.mkdir 'config' unless File.exists? 'config'
|
26
26
|
configuration_file = ERB.new(File.read("#{Blazing::TEMPLATE_ROOT}/config.erb")).result
|
27
27
|
|
28
28
|
File.open(Blazing::DEFAULT_CONFIG_LOCATION,"wb") do |f|
|
data/lib/blazing/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'blazing'
|
2
2
|
|
3
|
+
ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
4
|
+
|
3
5
|
#
|
4
6
|
# Stuff borrowed from carlhuda/bundler
|
5
7
|
#
|
@@ -19,10 +21,10 @@ RSpec.configure do |config|
|
|
19
21
|
|
20
22
|
def setup_sandbox
|
21
23
|
@blazing_root = Dir.pwd
|
22
|
-
@sandbox_directory = File.join(
|
24
|
+
@sandbox_directory = File.join('/tmp/blazing_sandbox')
|
23
25
|
|
24
26
|
# Sometimes, when specs failed, the sandbox would stick around
|
25
|
-
FileUtils.rm_rf(@sandbox_directory) if
|
27
|
+
FileUtils.rm_rf(@sandbox_directory) if File.exists?(@sandbox_directory)
|
26
28
|
|
27
29
|
# Setup Sandbox and cd into it
|
28
30
|
Dir.mkdir(@sandbox_directory)
|
metadata
CHANGED
@@ -1,167 +1,176 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: blazing
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: -3702664376
|
5
5
|
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
- alpha
|
11
|
+
- 2
|
12
|
+
version: 0.1.0.alpha2
|
6
13
|
platform: ruby
|
7
|
-
authors:
|
14
|
+
authors:
|
8
15
|
- Felipe Kaufmann
|
9
16
|
autorequire:
|
10
17
|
bindir: bin
|
11
18
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
19
|
+
|
20
|
+
date: 2011-10-23 00:00:00 Z
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
15
23
|
name: rdoc
|
16
|
-
requirement: &70265904329540 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
24
|
prerelease: false
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: aruba
|
27
|
-
requirement: &70265904328700 !ruby/object:Gem::Requirement
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
28
26
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
33
34
|
type: :development
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
|
-
requirements:
|
41
|
+
requirements:
|
41
42
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 63
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 9
|
48
|
+
- 2
|
43
49
|
version: 0.9.2
|
44
50
|
type: :development
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
48
53
|
name: rspec
|
49
|
-
requirement: &70265904323240 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :development
|
56
54
|
prerelease: false
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: guard
|
60
|
-
requirement: &70265904321580 !ruby/object:Gem::Requirement
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
61
56
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
66
64
|
type: :development
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: guard
|
67
68
|
prerelease: false
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard-rspec
|
71
|
-
requirement: &70265904320720 !ruby/object:Gem::Requirement
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
70
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
77
78
|
type: :development
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: guard-rspec
|
78
82
|
prerelease: false
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: guard-cucumber
|
82
|
-
requirement: &70265904319600 !ruby/object:Gem::Requirement
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
84
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 3
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
version: "0"
|
88
92
|
type: :development
|
89
|
-
|
90
|
-
|
91
|
-
- !ruby/object:Gem::Dependency
|
93
|
+
version_requirements: *id005
|
94
|
+
- !ruby/object:Gem::Dependency
|
92
95
|
name: growl
|
93
|
-
requirement: &70265904318360 !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
|
-
requirements:
|
96
|
-
- - ! '>='
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
|
-
type: :development
|
100
96
|
prerelease: false
|
101
|
-
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: rb-fsevent
|
104
|
-
requirement: &70265904317480 !ruby/object:Gem::Requirement
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
98
|
none: false
|
106
|
-
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
hash: 3
|
103
|
+
segments:
|
104
|
+
- 0
|
105
|
+
version: "0"
|
110
106
|
type: :development
|
107
|
+
version_requirements: *id006
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: rb-fsevent
|
111
110
|
prerelease: false
|
112
|
-
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: methadone
|
115
|
-
requirement: &70265904316400 !ruby/object:Gem::Requirement
|
111
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
116
112
|
none: false
|
117
|
-
requirements:
|
118
|
-
- -
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
hash: 3
|
117
|
+
segments:
|
118
|
+
- 0
|
119
|
+
version: "0"
|
120
|
+
type: :development
|
121
|
+
version_requirements: *id007
|
122
|
+
- !ruby/object:Gem::Dependency
|
125
123
|
name: grit
|
126
|
-
|
124
|
+
prerelease: false
|
125
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
127
126
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
hash: 3
|
131
|
+
segments:
|
132
|
+
- 0
|
133
|
+
version: "0"
|
132
134
|
type: :runtime
|
133
|
-
|
134
|
-
|
135
|
-
- !ruby/object:Gem::Dependency
|
135
|
+
version_requirements: *id008
|
136
|
+
- !ruby/object:Gem::Dependency
|
136
137
|
name: activesupport
|
137
|
-
|
138
|
+
prerelease: false
|
139
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
138
140
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
hash: 3
|
145
|
+
segments:
|
146
|
+
- 0
|
147
|
+
version: "0"
|
143
148
|
type: :runtime
|
144
|
-
|
145
|
-
|
146
|
-
- !ruby/object:Gem::Dependency
|
149
|
+
version_requirements: *id009
|
150
|
+
- !ruby/object:Gem::Dependency
|
147
151
|
name: i18n
|
148
|
-
|
152
|
+
prerelease: false
|
153
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
149
154
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
hash: 3
|
159
|
+
segments:
|
160
|
+
- 0
|
161
|
+
version: "0"
|
154
162
|
type: :runtime
|
155
|
-
|
156
|
-
version_requirements: *70265904313940
|
163
|
+
version_requirements: *id010
|
157
164
|
description: git push deployent utility, ready to be extended by your own recipes
|
158
|
-
email:
|
165
|
+
email:
|
159
166
|
- felipekaufmann@gmail.com
|
160
|
-
executables:
|
167
|
+
executables:
|
161
168
|
- blazing
|
162
169
|
extensions: []
|
170
|
+
|
163
171
|
extra_rdoc_files: []
|
164
|
-
|
172
|
+
|
173
|
+
files:
|
165
174
|
- .gitignore
|
166
175
|
- .rvmrc
|
167
176
|
- Gemfile
|
@@ -172,10 +181,9 @@ files:
|
|
172
181
|
- Rakefile
|
173
182
|
- bin/blazing
|
174
183
|
- blazing.gemspec
|
175
|
-
- features/help_banner.feature
|
176
|
-
- features/step_definitions/blazing_steps.rb
|
177
|
-
- features/support/env.rb
|
178
184
|
- lib/blazing.rb
|
185
|
+
- lib/blazing/cli_logger.rb
|
186
|
+
- lib/blazing/cli_logging.rb
|
179
187
|
- lib/blazing/config.rb
|
180
188
|
- lib/blazing/dsl_setter.rb
|
181
189
|
- lib/blazing/recipe.rb
|
@@ -197,32 +205,40 @@ files:
|
|
197
205
|
- spec/support/empty_config.rb
|
198
206
|
homepage: https://github.com/effkay/blazing
|
199
207
|
licenses: []
|
208
|
+
|
200
209
|
post_install_message:
|
201
210
|
rdoc_options: []
|
202
|
-
|
211
|
+
|
212
|
+
require_paths:
|
203
213
|
- lib
|
204
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
214
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
205
215
|
none: false
|
206
|
-
requirements:
|
207
|
-
- -
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
|
210
|
-
|
216
|
+
requirements:
|
217
|
+
- - ">="
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
hash: 3
|
220
|
+
segments:
|
221
|
+
- 0
|
222
|
+
version: "0"
|
223
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
224
|
none: false
|
212
|
-
requirements:
|
213
|
-
- -
|
214
|
-
- !ruby/object:Gem::Version
|
225
|
+
requirements:
|
226
|
+
- - ">"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
hash: 25
|
229
|
+
segments:
|
230
|
+
- 1
|
231
|
+
- 3
|
232
|
+
- 1
|
215
233
|
version: 1.3.1
|
216
234
|
requirements: []
|
235
|
+
|
217
236
|
rubyforge_project: blazing
|
218
237
|
rubygems_version: 1.8.10
|
219
238
|
signing_key:
|
220
239
|
specification_version: 3
|
221
240
|
summary: blazing fast deployment
|
222
|
-
test_files:
|
223
|
-
- features/help_banner.feature
|
224
|
-
- features/step_definitions/blazing_steps.rb
|
225
|
-
- features/support/env.rb
|
241
|
+
test_files:
|
226
242
|
- spec/blazing/config_spec.rb
|
227
243
|
- spec/blazing/integration/init_spec.rb
|
228
244
|
- spec/blazing/integration/setup_local_spec.rb
|
@@ -1,13 +0,0 @@
|
|
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"
|
@@ -1 +0,0 @@
|
|
1
|
-
# Put your step defintions here
|
data/features/support/env.rb
DELETED