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 CHANGED
@@ -5,7 +5,6 @@ PATH
5
5
  activesupport
6
6
  grit
7
7
  i18n
8
- methadone
9
8
 
10
9
  GEM
11
10
  remote: http://rubygems.org/
@@ -46,7 +45,6 @@ GEM
46
45
  guard (>= 0.8.4)
47
46
  i18n (0.6.0)
48
47
  json (1.6.1)
49
- methadone (0.3.0)
50
48
  mime-types (1.16)
51
49
  multi_json (1.0.3)
52
50
  rack (1.3.4)
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
- ## Overview
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
- ## Development & Contribution
42
+ ### Init
12
43
 
13
- ### Improving Blazing itself
44
+ Run `blazing init` in your project root to create a sample config file.
14
45
 
15
- ### Blazing Recipes
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
- ## Contribution
54
+ `blazing setup:remote <target>` will setup the project on the server side. It will:
18
55
 
19
- ## TODO
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
- ###0.1 alpha:
60
+ `blazing update <target>`
22
61
 
23
- * implement hook
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
- * implement recipes
64
+ ### Deploying
26
65
 
27
- * checkout branch specified when deploying (i.e git push production
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
- * handle target as argument in runner
68
+ ## Development & Contribution
31
69
 
32
- * finish readme
70
+ ### Improving Blazing itself
33
71
 
34
- ### Later
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
- * recipes with options
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,:features]
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
- include Methadone::Main
11
+ options = {}
13
12
 
14
- main do |command, target|
15
- if command == 'init'
16
- config = nil
17
- else
18
- config = Blazing::Config.parse(options[:file])
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
- runner = Blazing::Runner.new(config, target)
22
- runner.exec(command)
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
- arg :command
26
- arg :target, :optional
27
- on("-f configuration", "--file configuration", "config file location (defaults to config/blazing.rb)")
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
- go!
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
@@ -1,9 +1,9 @@
1
1
  require 'erb'
2
- require 'methadone'
2
+ require 'blazing/cli_logging'
3
3
 
4
4
  class Blazing::Runner
5
5
 
6
- include Methadone::CLILogging
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 Dir.exists? 'config'
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|
@@ -1,3 +1,3 @@
1
1
  module Blazing
2
- VERSION = "0.1.0.alpha1"
2
+ VERSION = "0.1.0.alpha2"
3
3
  end
@@ -14,7 +14,7 @@ describe 'blazing init' do
14
14
  end
15
15
 
16
16
  it 'creates a config directory if none exists yet' do
17
- Dir.exists?('config').should be true
17
+ File.exists?('config').should be true
18
18
  end
19
19
 
20
20
  it 'creates a config file in config/blazing.rb' do
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(@blazing_root, '/tmp/blazing_sandbox')
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 Dir.exists?(@sandbox_directory)
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
- version: 0.1.0.alpha1
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
- date: 2011-10-23 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
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
- version_requirements: *70265904329540
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
- version: '0'
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
33
34
  type: :development
34
- prerelease: false
35
- version_requirements: *70265904328700
36
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70265904326660 !ruby/object:Gem::Requirement
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
- prerelease: false
46
- version_requirements: *70265904326660
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
- version_requirements: *70265904323240
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
- version: '0'
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
- version_requirements: *70265904321580
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
- version: '0'
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
- version_requirements: *70265904320720
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
- version: '0'
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
88
92
  type: :development
89
- prerelease: false
90
- version_requirements: *70265904319600
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
- version_requirements: *70265904318360
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
- version: '0'
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
- version_requirements: *70265904317480
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
- version: '0'
121
- type: :runtime
122
- prerelease: false
123
- version_requirements: *70265904316400
124
- - !ruby/object:Gem::Dependency
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
- requirement: &70265904315680 !ruby/object:Gem::Requirement
124
+ prerelease: false
125
+ requirement: &id008 !ruby/object:Gem::Requirement
127
126
  none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
132
134
  type: :runtime
133
- prerelease: false
134
- version_requirements: *70265904315680
135
- - !ruby/object:Gem::Dependency
135
+ version_requirements: *id008
136
+ - !ruby/object:Gem::Dependency
136
137
  name: activesupport
137
- requirement: &70265904314900 !ruby/object:Gem::Requirement
138
+ prerelease: false
139
+ requirement: &id009 !ruby/object:Gem::Requirement
138
140
  none: false
139
- requirements:
140
- - - ! '>='
141
- - !ruby/object:Gem::Version
142
- version: '0'
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ hash: 3
145
+ segments:
146
+ - 0
147
+ version: "0"
143
148
  type: :runtime
144
- prerelease: false
145
- version_requirements: *70265904314900
146
- - !ruby/object:Gem::Dependency
149
+ version_requirements: *id009
150
+ - !ruby/object:Gem::Dependency
147
151
  name: i18n
148
- requirement: &70265904313940 !ruby/object:Gem::Requirement
152
+ prerelease: false
153
+ requirement: &id010 !ruby/object:Gem::Requirement
149
154
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ hash: 3
159
+ segments:
160
+ - 0
161
+ version: "0"
154
162
  type: :runtime
155
- prerelease: false
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
- files:
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
- require_paths:
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
- version: '0'
210
- required_rubygems_version: !ruby/object:Gem::Requirement
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
@@ -1,9 +0,0 @@
1
- require 'aruba/cucumber'
2
- require 'methadone/cucumber'
3
-
4
- ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
5
-
6
- Before do
7
- # Using "announce" causes massive warnings on 1.9.2
8
- @puts = true
9
- end