blazing 0.1.0.alpha1 → 0.1.0.alpha2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](http://travis-ci.org/effkay/blazing.png)](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