blazing 0.0.4 → 0.0.5
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 +1 -0
 - data/.rvmrc +49 -0
 - data/Gemfile +4 -0
 - data/Gemfile.lock +25 -2
 - data/Guardfile +9 -0
 - data/MIT-LICENCE +20 -0
 - data/README.md +96 -47
 - data/Rakefile +8 -0
 - data/blazing.gemspec +4 -0
 - data/index.html +111 -0
 - data/lib/blazing.rb +2 -3
 - data/lib/blazing/cli/base.rb +7 -10
 - data/lib/blazing/cli/create.rb +2 -2
 - data/lib/blazing/logger.rb +33 -22
 - data/lib/blazing/recipe.rb +60 -18
 - data/lib/blazing/recipes/bundler_recipe.rb +14 -0
 - data/lib/blazing/recipes/rvm_recipe.rb +15 -0
 - data/lib/blazing/remote.rb +41 -22
 - data/lib/blazing/target.rb +6 -7
 - data/lib/blazing/version.rb +1 -1
 - data/spec/blazing/recipe_spec.rb +90 -0
 - data/spec/blazing/remote_spec.rb +13 -0
 - data/spec/spec_helper.rb +4 -0
 - metadata +39 -18
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rvmrc
    ADDED
    
    | 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env bash
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This is an RVM Project .rvmrc file, used to automatically load the ruby
         
     | 
| 
      
 4 
     | 
    
         
            +
            # development environment upon cd'ing into the directory
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
         
     | 
| 
      
 7 
     | 
    
         
            +
            environment_id="ruby-1.9.2-p180@blazing"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # First we attempt to load the desired environment directly from the environment
         
     | 
| 
      
 11 
     | 
    
         
            +
            # file. This is very fast and efficicent compared to running through the entire
         
     | 
| 
      
 12 
     | 
    
         
            +
            # CLI and selector. If you want feedback on which environment was used then
         
     | 
| 
      
 13 
     | 
    
         
            +
            # insert the word 'use' after --create as this triggers verbose mode.
         
     | 
| 
      
 14 
     | 
    
         
            +
            #
         
     | 
| 
      
 15 
     | 
    
         
            +
            if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
         
     | 
| 
      
 16 
     | 
    
         
            +
              && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] ; then
         
     | 
| 
      
 17 
     | 
    
         
            +
              \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              [[ -s ".rvm/hooks/after_use" ]] && . ".rvm/hooks/after_use"
         
     | 
| 
      
 20 
     | 
    
         
            +
            else
         
     | 
| 
      
 21 
     | 
    
         
            +
              # If the environment file has not yet been created, use the RVM CLI to select.
         
     | 
| 
      
 22 
     | 
    
         
            +
              rvm --create  "$environment_id"
         
     | 
| 
      
 23 
     | 
    
         
            +
            fi
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            #
         
     | 
| 
      
 26 
     | 
    
         
            +
            # If you use an RVM gemset file to install a list of gems (*.gems), you can have
         
     | 
| 
      
 27 
     | 
    
         
            +
            # it be automatically loaded. Uncomment the following and adjust the filename if
         
     | 
| 
      
 28 
     | 
    
         
            +
            # necessary.
         
     | 
| 
      
 29 
     | 
    
         
            +
            #
         
     | 
| 
      
 30 
     | 
    
         
            +
            # filename=".gems"
         
     | 
| 
      
 31 
     | 
    
         
            +
            # if [[ -s "$filename" ]] ; then
         
     | 
| 
      
 32 
     | 
    
         
            +
            #   rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
         
     | 
| 
      
 33 
     | 
    
         
            +
            # fi
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            #
         
     | 
| 
      
 36 
     | 
    
         
            +
            # If you use bundler and would like to run bundle each time you enter the
         
     | 
| 
      
 37 
     | 
    
         
            +
            # directory, you can uncomment the following code.
         
     | 
| 
      
 38 
     | 
    
         
            +
            #
         
     | 
| 
      
 39 
     | 
    
         
            +
            #   # Ensure that Bundler is installed. Install it if it is not.
         
     | 
| 
      
 40 
     | 
    
         
            +
            #   if ! command -v bundle >/dev/null; then
         
     | 
| 
      
 41 
     | 
    
         
            +
            #      printf "The rubygem 'bundler' is not installed. Installing it now.\n"
         
     | 
| 
      
 42 
     | 
    
         
            +
            #      gem install bundler
         
     | 
| 
      
 43 
     | 
    
         
            +
            #   fi
         
     | 
| 
      
 44 
     | 
    
         
            +
            #
         
     | 
| 
      
 45 
     | 
    
         
            +
            #   # Bundle while reducing excess noise.
         
     | 
| 
      
 46 
     | 
    
         
            +
            #   printf "Bundling your gems. This may take a few minutes on a fresh clone.\n"
         
     | 
| 
      
 47 
     | 
    
         
            +
            #   bundle | grep -v '^Using ' | grep -v ' is complete' | sed '/^$/d'
         
     | 
| 
      
 48 
     | 
    
         
            +
            #
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,17 +1,34 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                blazing (0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
                blazing (0.0.4)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  activesupport (>= 3.0.5)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  i18n
         
     | 
| 
       5 
7 
     | 
    
         
             
                  thor (>= 0.14.6)
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
            GEM
         
     | 
| 
       8 
10 
     | 
    
         
             
              remote: http://rubygems.org/
         
     | 
| 
       9 
11 
     | 
    
         
             
              specs:
         
     | 
| 
      
 12 
     | 
    
         
            +
                activesupport (3.0.5)
         
     | 
| 
       10 
13 
     | 
    
         
             
                archive-tar-minitar (0.5.2)
         
     | 
| 
       11 
14 
     | 
    
         
             
                columnize (0.3.2)
         
     | 
| 
      
 15 
     | 
    
         
            +
                configuration (1.2.0)
         
     | 
| 
       12 
16 
     | 
    
         
             
                diff-lcs (1.1.2)
         
     | 
| 
      
 17 
     | 
    
         
            +
                growl (1.0.3)
         
     | 
| 
      
 18 
     | 
    
         
            +
                guard (0.3.0)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  open_gem (~> 1.4.2)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  thor (~> 0.14.6)
         
     | 
| 
      
 21 
     | 
    
         
            +
                guard-rspec (0.2.0)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  guard (>= 0.2.2)
         
     | 
| 
      
 23 
     | 
    
         
            +
                i18n (0.5.0)
         
     | 
| 
      
 24 
     | 
    
         
            +
                launchy (0.3.7)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  configuration (>= 0.0.5)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  rake (>= 0.8.1)
         
     | 
| 
       13 
27 
     | 
    
         
             
                linecache19 (0.5.11)
         
     | 
| 
       14 
28 
     | 
    
         
             
                  ruby_core_source (>= 0.1.4)
         
     | 
| 
      
 29 
     | 
    
         
            +
                open_gem (1.4.2)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  launchy (~> 0.3.5)
         
     | 
| 
      
 31 
     | 
    
         
            +
                rake (0.8.7)
         
     | 
| 
       15 
32 
     | 
    
         
             
                rspec (2.4.0)
         
     | 
| 
       16 
33 
     | 
    
         
             
                  rspec-core (~> 2.4.0)
         
     | 
| 
       17 
34 
     | 
    
         
             
                  rspec-expectations (~> 2.4.0)
         
     | 
| 
         @@ -30,6 +47,9 @@ GEM 
     | 
|
| 
       30 
47 
     | 
    
         
             
                  ruby-debug-base19 (>= 0.11.19)
         
     | 
| 
       31 
48 
     | 
    
         
             
                ruby_core_source (0.1.4)
         
     | 
| 
       32 
49 
     | 
    
         
             
                  archive-tar-minitar (>= 0.5.2)
         
     | 
| 
      
 50 
     | 
    
         
            +
                simplecov (0.4.1)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  simplecov-html (~> 0.4.3)
         
     | 
| 
      
 52 
     | 
    
         
            +
                simplecov-html (0.4.3)
         
     | 
| 
       33 
53 
     | 
    
         
             
                thor (0.14.6)
         
     | 
| 
       34 
54 
     | 
    
         | 
| 
       35 
55 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
         @@ -37,6 +57,9 @@ PLATFORMS 
     | 
|
| 
       37 
57 
     | 
    
         | 
| 
       38 
58 
     | 
    
         
             
            DEPENDENCIES
         
     | 
| 
       39 
59 
     | 
    
         
             
              blazing!
         
     | 
| 
      
 60 
     | 
    
         
            +
              growl
         
     | 
| 
      
 61 
     | 
    
         
            +
              guard
         
     | 
| 
      
 62 
     | 
    
         
            +
              guard-rspec
         
     | 
| 
       40 
63 
     | 
    
         
             
              rspec
         
     | 
| 
       41 
64 
     | 
    
         
             
              ruby-debug19
         
     | 
| 
       42 
     | 
    
         
            -
               
     | 
| 
      
 65 
     | 
    
         
            +
              simplecov (>= 0.4.0)
         
     | 
    
        data/Guardfile
    ADDED
    
    | 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # A sample Guardfile
         
     | 
| 
      
 2 
     | 
    
         
            +
            # More info at https://github.com/guard/guard#readme
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            guard 'rspec', :version => 2, :cli => "--colour --fail-fast --format nested" do
         
     | 
| 
      
 5 
     | 
    
         
            +
              watch(%r{^spec/.+_spec\.rb})
         
     | 
| 
      
 6 
     | 
    
         
            +
              watch(%r{^lib/(.+)\.rb})     { |m| "spec/#{m[1]}_spec.rb" }
         
     | 
| 
      
 7 
     | 
    
         
            +
              watch(%r{^lib/blazing/(.+)\.rb})     { |m| "spec/blazing/#{m[1]}_spec.rb" }
         
     | 
| 
      
 8 
     | 
    
         
            +
              watch('spec/spec_helper.rb') { "spec" }
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
    
        data/MIT-LICENCE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2011 Felipe Kaufmann
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,65 +1,114 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            Blazing -- Fast and painless git push deploys
         
     | 
| 
      
 2 
     | 
    
         
            +
            =============================================
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            ## What
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
            Blazing aims to be a fast and hassle free way to deploy web
         
     | 
| 
      
 7 
     | 
    
         
            +
            applications. It may work for other frameworks, but it is mainly
         
     | 
| 
      
 8 
     | 
    
         
            +
            designed to deploy Ruby on Rails and Rack based applications, as well as
         
     | 
| 
      
 9 
     | 
    
         
            +
            static sites.
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            ------------------------
         
     | 
| 
       10 
     | 
    
         
            -
             
         
     | 
| 
       11 
     | 
    
         
            -
              * deploy is just a push to another remote. all that must be done is triggered by pre and post receveie git hooks.
         
     | 
| 
       12 
     | 
    
         
            -
              * initial setup done by ruby script
         
     | 
| 
       13 
     | 
    
         
            -
              * extensible recipe system, so you can plug in and out what you need and easily roll your own recipes
         
     | 
| 
      
 11 
     | 
    
         
            +
            Some design goals:
         
     | 
| 
       14 
12 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
              * A deploy is just a git push to another remote. All that must be done afterwards is triggered by pre and post receveie git hooks.
         
     | 
| 
      
 14 
     | 
    
         
            +
              * initial setup done by ruby script, so unexerpienced users do not
         
     | 
| 
      
 15 
     | 
    
         
            +
                have to fiddle with the git config files
         
     | 
| 
      
 16 
     | 
    
         
            +
              * clean API for writing your own recipes, no messy rake file jungles
         
     | 
| 
      
 17 
     | 
    
         
            +
              * DRY, clean and minimal configuration file
         
     | 
| 
      
 18 
     | 
    
         
            +
              * blazing fast!
         
     | 
| 
       17 
19 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
            ## Why
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
              
     | 
| 
      
 22 
     | 
    
         
            +
            I initially started working on an extension to capistrano which would
         
     | 
| 
      
 23 
     | 
    
         
            +
            cover most of my needs and the needs we had at [Screen
         
     | 
| 
      
 24 
     | 
    
         
            +
            Concept](http://www.screencocnept.ch). After a short while I noticed
         
     | 
| 
      
 25 
     | 
    
         
            +
            that bolting more functionality on top of capistrano was just going to
         
     | 
| 
      
 26 
     | 
    
         
            +
            be messy (and a PTA to maintain). We were alerady using tons of own recipes and customizations,
         
     | 
| 
      
 27 
     | 
    
         
            +
            capistrano multistage, capistrano-ext, etc.
         
     | 
| 
       21 
28 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
            I had a look at what others were doing and after a round of trying
         
     | 
| 
      
 30 
     | 
    
         
            +
            around and not getting what I wanted, I started this.
         
     | 
| 
       23 
31 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
            ### Inspiration & Alternatives
         
     | 
| 
       25 
33 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
              
     | 
| 
      
 34 
     | 
    
         
            +
            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
         
     | 
| 
      
 35 
     | 
    
         
            +
            years. Then got inspired by defunkt's
         
     | 
| 
      
 36 
     | 
    
         
            +
            [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.
         
     | 
| 
       27 
37 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
            ## Installation & Setup
         
     | 
| 
       29 
39 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
            Run `blazing init` in your project's root, this will create the necessary files to use and configure blazing.
         
     | 
| 
       31 
41 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
            ## Configuration & Blazing DSL
         
     | 
| 
       33 
43 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 44 
     | 
    
         
            +
            The blazing config file features a DSL similar to capistrano or other
         
     | 
| 
      
 45 
     | 
    
         
            +
            such systems.
         
     | 
| 
       35 
46 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
            Examples:
         
     | 
| 
       37 
48 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            =======
         
     | 
| 
      
 49 
     | 
    
         
            +
                repository 'git@github.com:someones/repository.git'
         
     | 
| 
       40 
50 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
                use [:rvm, :bundler, :whenever]
         
     | 
| 
       42 
52 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              * cleanup logging
         
     | 
| 
       46 
     | 
    
         
            -
              * sync fs recipes
         
     | 
| 
       47 
     | 
    
         
            -
              * sync db recipes for
         
     | 
| 
       48 
     | 
    
         
            -
                * mysql
         
     | 
| 
       49 
     | 
    
         
            -
                * postgres
         
     | 
| 
       50 
     | 
    
         
            -
                * mongodb
         
     | 
| 
       51 
     | 
    
         
            -
                * redis
         
     | 
| 
      
 53 
     | 
    
         
            +
                target :stagigng, :deploy_to => 'user@hostname:/path/to/target', :default => true
         
     | 
| 
      
 54 
     | 
    
         
            +
                target :production, :deploy_to => 'user@somehostname:/path/to/target'
         
     | 
| 
       52 
55 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
      
 56 
     | 
    
         
            +
                ...
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            ## Deploying
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                blazing deploy <target_name>
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            Or, if everyting is already set up on the remote etc. you can acutally
         
     | 
| 
      
 63 
     | 
    
         
            +
            just do a git push to your target name.
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            ## Development 
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            Report Issues/Questions/Feature requests on [GitHub
         
     | 
| 
      
 68 
     | 
    
         
            +
            Issues](http://github.com/effkay/blazing/issues)
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            ### Extending / Fixing Blazing itself
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            Pull requests are very welcome as long as they are well tested. Please
         
     | 
| 
      
 73 
     | 
    
         
            +
            create a topic branch for every separate change you intend to make.
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            ### Developing Blazing Extensions
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            **(Still work in progress and not a stable API yet)**
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            Example:
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                class SomeFunkyRecipe < Blazing::Recipe
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                  def self.run
         
     | 
| 
      
 84 
     | 
    
         
            +
                    # do something
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
            ## Authors
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            [Felipe Kaufmann](http://github.com/effkay)
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            ## License
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            Copyright (c) 2011 Felipe Kaufmann
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 98 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 99 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 100 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 101 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 102 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 103 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 106 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 109 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 110 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 111 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 112 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 113 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 114 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,2 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'bundler'
         
     | 
| 
       2 
2 
     | 
    
         
             
            Bundler::GemHelper.install_tasks
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
      
 5 
     | 
    
         
            +
            desc "Run specs"
         
     | 
| 
      
 6 
     | 
    
         
            +
            RSpec::Core::RakeTask.new do |t|
         
     | 
| 
      
 7 
     | 
    
         
            +
              # t.rspec_opts = %w(--colour --fail-fast --format nested)
         
     | 
| 
      
 8 
     | 
    
         
            +
              t.rspec_opts = %w(--colour  --format nested)
         
     | 
| 
      
 9 
     | 
    
         
            +
              t.ruby_opts  = %w(-w)
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
    
        data/blazing.gemspec
    CHANGED
    
    | 
         @@ -18,4 +18,8 @@ Gem::Specification.new do |s| 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              # TODO: better to use ~ ?
         
     | 
| 
       20 
20 
     | 
    
         
             
              s.add_dependency "thor", ">= 0.14.6"
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              # TODO: Get rid of those, just used for guessing recipe names etc in lib/recipes.rb
         
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_dependency "activesupport", ">= 3.0.5"
         
     | 
| 
      
 24 
     | 
    
         
            +
              s.add_dependency "i18n"
         
     | 
| 
       21 
25 
     | 
    
         
             
            end
         
     | 
    
        data/index.html
    ADDED
    
    | 
         @@ -0,0 +1,111 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <meta charset='utf-8'>
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              <title>effkay/blazing @ GitHub</title>
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              <style type="text/css">
         
     | 
| 
      
 9 
     | 
    
         
            +
                body {
         
     | 
| 
      
 10 
     | 
    
         
            +
                  margin-top: 1.0em;
         
     | 
| 
      
 11 
     | 
    
         
            +
                  background-color: #e7600d;
         
     | 
| 
      
 12 
     | 
    
         
            +
                  font-family: Helvetica, Arial, FreeSans, san-serif;
         
     | 
| 
      
 13 
     | 
    
         
            +
                  color: #ffffff;
         
     | 
| 
      
 14 
     | 
    
         
            +
                }
         
     | 
| 
      
 15 
     | 
    
         
            +
                #container {
         
     | 
| 
      
 16 
     | 
    
         
            +
                  margin: 0 auto;
         
     | 
| 
      
 17 
     | 
    
         
            +
                  width: 700px;
         
     | 
| 
      
 18 
     | 
    
         
            +
                }
         
     | 
| 
      
 19 
     | 
    
         
            +
                h1 { font-size: 3.8em; color: #189ff2; margin-bottom: 3px; }
         
     | 
| 
      
 20 
     | 
    
         
            +
                h1 .small { font-size: 0.4em; }
         
     | 
| 
      
 21 
     | 
    
         
            +
                h1 a { text-decoration: none }
         
     | 
| 
      
 22 
     | 
    
         
            +
                h2 { font-size: 1.5em; color: #189ff2; }
         
     | 
| 
      
 23 
     | 
    
         
            +
                h3 { text-align: center; color: #189ff2; }
         
     | 
| 
      
 24 
     | 
    
         
            +
                a { color: #189ff2; }
         
     | 
| 
      
 25 
     | 
    
         
            +
                .description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;}
         
     | 
| 
      
 26 
     | 
    
         
            +
                .download { float: right; }
         
     | 
| 
      
 27 
     | 
    
         
            +
                pre { background: #000; color: #fff; padding: 15px;}
         
     | 
| 
      
 28 
     | 
    
         
            +
                hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
         
     | 
| 
      
 29 
     | 
    
         
            +
                .footer { text-align:center; padding-top:30px; font-style: italic; }
         
     | 
| 
      
 30 
     | 
    
         
            +
              </style>
         
     | 
| 
      
 31 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 34 
     | 
    
         
            +
              <a href="http://github.com/effkay/blazing"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              <div id="container">
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                <div class="download">
         
     | 
| 
      
 39 
     | 
    
         
            +
                  <a href="http://github.com/effkay/blazing/zipball/master">
         
     | 
| 
      
 40 
     | 
    
         
            +
                    <img border="0" width="90" src="http://github.com/images/modules/download/zip.png"></a>
         
     | 
| 
      
 41 
     | 
    
         
            +
                  <a href="http://github.com/effkay/blazing/tarball/master">
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <img border="0" width="90" src="http://github.com/images/modules/download/tar.png"></a>
         
     | 
| 
      
 43 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                <h1><a href="http://github.com/effkay/blazing">blazing</a>
         
     | 
| 
      
 46 
     | 
    
         
            +
                  <span class="small">by <a href="http://github.com/effkay">effkay</a></span></h1>
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                <div class="description">
         
     | 
| 
      
 49 
     | 
    
         
            +
                  git push deployments
         
     | 
| 
      
 50 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                <p>blahblahmainproject text</p><h2>Dependencies</h2>
         
     | 
| 
      
 53 
     | 
    
         
            +
            <p>heregoesdependencies</p>
         
     | 
| 
      
 54 
     | 
    
         
            +
            <h2>Install</h2>
         
     | 
| 
      
 55 
     | 
    
         
            +
            <p>heregoesinstallinstructions</p>
         
     | 
| 
      
 56 
     | 
    
         
            +
            <h2>License</h2>
         
     | 
| 
      
 57 
     | 
    
         
            +
            <p>Copyright (c) 2011 Felipe Kaufmann
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 60 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 61 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 62 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 63 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 64 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 65 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 68 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 71 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 72 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 73 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 74 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 75 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 76 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
| 
      
 77 
     | 
    
         
            +
            </p>
         
     | 
| 
      
 78 
     | 
    
         
            +
            <h2>Authors</h2>
         
     | 
| 
      
 79 
     | 
    
         
            +
            <p>Felipe Kaufmann (felipekaufmann@gmail.com)
         
     | 
| 
      
 80 
     | 
    
         
            +
            <h2>Contact</h2>
         
     | 
| 
      
 81 
     | 
    
         
            +
            <p>Felipe Kaufmann (felipekaufmann@gmail.com)
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                <h2>Download</h2>
         
     | 
| 
      
 85 
     | 
    
         
            +
                <p>
         
     | 
| 
      
 86 
     | 
    
         
            +
                  You can download this project in either
         
     | 
| 
      
 87 
     | 
    
         
            +
                  <a href="http://github.com/effkay/blazing/zipball/master">zip</a> or
         
     | 
| 
      
 88 
     | 
    
         
            +
                  <a href="http://github.com/effkay/blazing/tarball/master">tar</a> formats.
         
     | 
| 
      
 89 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 90 
     | 
    
         
            +
                <p>You can also clone the project with <a href="http://git-scm.com">Git</a>
         
     | 
| 
      
 91 
     | 
    
         
            +
                  by running:
         
     | 
| 
      
 92 
     | 
    
         
            +
                  <pre>$ git clone git://github.com/effkay/blazing</pre>
         
     | 
| 
      
 93 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                <div class="footer">
         
     | 
| 
      
 96 
     | 
    
         
            +
                  get the source code on GitHub : <a href="http://github.com/effkay/blazing">effkay/blazing</a>
         
     | 
| 
      
 97 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
              <script type="text/javascript">
         
     | 
| 
      
 102 
     | 
    
         
            +
            var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
         
     | 
| 
      
 103 
     | 
    
         
            +
            document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
         
     | 
| 
      
 104 
     | 
    
         
            +
            </script>
         
     | 
| 
      
 105 
     | 
    
         
            +
            <script type="text/javascript">
         
     | 
| 
      
 106 
     | 
    
         
            +
            try {
         
     | 
| 
      
 107 
     | 
    
         
            +
            var pageTracker = _gat._getTracker("UA-757870-3");
         
     | 
| 
      
 108 
     | 
    
         
            +
            pageTracker._trackPageview();
         
     | 
| 
      
 109 
     | 
    
         
            +
            } catch(err) {}</script>
         
     | 
| 
      
 110 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 111 
     | 
    
         
            +
            </html>
         
     | 
    
        data/lib/blazing.rb
    CHANGED
    
    | 
         @@ -1,19 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'thor'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'thor/group'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'blazing'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'blazing/cli/base'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
            require 'blazing/config'
         
     | 
| 
       7 
5 
     | 
    
         
             
            require 'blazing/logger'
         
     | 
| 
       8 
6 
     | 
    
         
             
            require 'blazing/target'
         
     | 
| 
       9 
7 
     | 
    
         
             
            require 'blazing/remote'
         
     | 
| 
       10 
8 
     | 
    
         
             
            require 'blazing/recipe'
         
     | 
| 
       11 
9 
     | 
    
         
             
            require 'blazing/object'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'blazing/cli/base'
         
     | 
| 
       12 
11 
     | 
    
         
             
            require 'blazing/cli/create'
         
     | 
| 
       13 
12 
     | 
    
         
             
            require 'blazing/cli/hook'
         
     | 
| 
       14 
13 
     | 
    
         | 
| 
       15 
14 
     | 
    
         
             
            module Blazing
         
     | 
| 
       16 
15 
     | 
    
         
             
              DIRECTORY = 'config'
         
     | 
| 
       17 
16 
     | 
    
         
             
              CONFIGURATION_FILE = 'config/blazing.rb'
         
     | 
| 
       18 
     | 
    
         
            -
              LOGGER  
     | 
| 
      
 17 
     | 
    
         
            +
              LOGGER ||= Blazing::Logger.new
         
     | 
| 
       19 
18 
     | 
    
         
             
            end
         
     | 
    
        data/lib/blazing/cli/base.rb
    CHANGED
    
    | 
         @@ -2,9 +2,6 @@ module Blazing 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module CLI
         
     | 
| 
       3 
3 
     | 
    
         
             
                class Base < Thor
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                  #
         
     | 
| 
       6 
     | 
    
         
            -
                  # Configure blazing in current working dir
         
     | 
| 
       7 
     | 
    
         
            -
                  #
         
     | 
| 
       8 
5 
     | 
    
         
             
                  desc 'init', 'prepare project for blazing deploys'
         
     | 
| 
       9 
6 
     | 
    
         
             
                  def init
         
     | 
| 
       10 
7 
     | 
    
         
             
                    target = ask "Deployment Target: (ie username@host:/path/to/app)"
         
     | 
| 
         @@ -14,13 +11,10 @@ module Blazing 
     | 
|
| 
       14 
11 
     | 
    
         
             
                    else
         
     | 
| 
       15 
12 
     | 
    
         
             
                      repository = ask "Repository URL: (ie username@host:/path/to/app)"
         
     | 
| 
       16 
13 
     | 
    
         
             
                    end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       18 
15 
     | 
    
         
             
                    Blazing::CLI::Create.new([repository, target]).invoke_all
         
     | 
| 
       19 
16 
     | 
    
         
             
                  end
         
     | 
| 
       20 
17 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                  #
         
     | 
| 
       22 
     | 
    
         
            -
                  # Setup target for deployment
         
     | 
| 
       23 
     | 
    
         
            -
                  #
         
     | 
| 
       24 
18 
     | 
    
         
             
                  desc 'setup TARGET_NAME', 'setup or update blazing on specified target and deploy'
         
     | 
| 
       25 
19 
     | 
    
         
             
                  def setup(target_name = nil)
         
     | 
| 
       26 
20 
     | 
    
         
             
                    config = Blazing::Config.load
         
     | 
| 
         @@ -37,9 +31,6 @@ module Blazing 
     | 
|
| 
       37 
31 
     | 
    
         
             
                    end
         
     | 
| 
       38 
32 
     | 
    
         
             
                  end
         
     | 
| 
       39 
33 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                  #
         
     | 
| 
       41 
     | 
    
         
            -
                  # Deploy to target
         
     | 
| 
       42 
     | 
    
         
            -
                  #
         
     | 
| 
       43 
34 
     | 
    
         
             
                  desc 'deploy TARGET', 'deploy to TARGET'
         
     | 
| 
       44 
35 
     | 
    
         
             
                  def deploy(target_name = nil)
         
     | 
| 
       45 
36 
     | 
    
         
             
                    config = Blazing::Config.load
         
     | 
| 
         @@ -52,7 +43,13 @@ module Blazing 
     | 
|
| 
       52 
43 
     | 
    
         
             
                    else
         
     | 
| 
       53 
44 
     | 
    
         
             
                      LOGGER.error "failed deploying on target #{target.name}"
         
     | 
| 
       54 
45 
     | 
    
         
             
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
       55 
47 
     | 
    
         | 
| 
      
 48 
     | 
    
         
            +
                  desc 'recipes', 'List available recipes'
         
     | 
| 
      
 49 
     | 
    
         
            +
                  def recipes
         
     | 
| 
      
 50 
     | 
    
         
            +
                    Blazing::Recipe.list.each do |recipe|
         
     | 
| 
      
 51 
     | 
    
         
            +
                      puts recipe.name
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
       56 
53 
     | 
    
         
             
                  end
         
     | 
| 
       57 
54 
     | 
    
         | 
| 
       58 
55 
     | 
    
         
             
                end
         
     | 
    
        data/lib/blazing/cli/create.rb
    CHANGED
    
    
    
        data/lib/blazing/logger.rb
    CHANGED
    
    | 
         @@ -1,36 +1,47 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Blazing
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Logger
         
     | 
| 
       3 
     | 
    
         
            -
              
         
     | 
| 
       4 
     | 
    
         
            -
                @@use_color = true
         
     | 
| 
       5 
     | 
    
         
            -
                # TODO: implement non colored output, allow to pass option from commandline
         
     | 
| 
       6 
3 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                [:info, :success, :warn, :error] 
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                   
     | 
| 
      
 4 
     | 
    
         
            +
                LOG_LEVELS =  [:info, :success, :warn, :error]
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize(use_color = false)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @use_color = use_color
         
     | 
| 
       11 
8 
     | 
    
         
             
                end
         
     | 
| 
       12 
9 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                def  
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
      
 10 
     | 
    
         
            +
                def messages
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @messages ||= []
         
     | 
| 
       15 
12 
     | 
    
         
             
                end
         
     | 
| 
       16 
13 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                def  
     | 
| 
       18 
     | 
    
         
            -
                   
     | 
| 
      
 14 
     | 
    
         
            +
                def puts(message, type)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  messages << Hash[:message => message, :type => type]
         
     | 
| 
       19 
16 
     | 
    
         
             
                end
         
     | 
| 
       20 
17 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                 
     | 
| 
       22 
     | 
    
         
            -
                   
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  when :success
         
     | 
| 
       26 
     | 
    
         
            -
                    puts prefix + message.green + postfix
         
     | 
| 
       27 
     | 
    
         
            -
                  when :warn
         
     | 
| 
       28 
     | 
    
         
            -
                    puts prefix + message.yellow + postfix
         
     | 
| 
       29 
     | 
    
         
            -
                  when :error
         
     | 
| 
       30 
     | 
    
         
            -
                    puts prefix + message.red + postfix
         
     | 
| 
       31 
     | 
    
         
            -
                  end 
         
     | 
| 
      
 18 
     | 
    
         
            +
                LOG_LEVELS.each do |type|
         
     | 
| 
      
 19 
     | 
    
         
            +
                  define_method type do |message|
         
     | 
| 
      
 20 
     | 
    
         
            +
                    puts(message, type)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
       32 
22 
     | 
    
         
             
                end
         
     | 
| 
       33 
23 
     | 
    
         | 
| 
      
 24 
     | 
    
         
            +
                # def prefix
         
     | 
| 
      
 25 
     | 
    
         
            +
                #   '[BLAZING] *** '
         
     | 
| 
      
 26 
     | 
    
         
            +
                # end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                # def postfix
         
     | 
| 
      
 29 
     | 
    
         
            +
                #   ' ***'
         
     | 
| 
      
 30 
     | 
    
         
            +
                # end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                # def message(message, type)
         
     | 
| 
      
 33 
     | 
    
         
            +
                #   case type
         
     | 
| 
      
 34 
     | 
    
         
            +
                #   when :info
         
     | 
| 
      
 35 
     | 
    
         
            +
                #     puts prefix + message.blue + postfix
         
     | 
| 
      
 36 
     | 
    
         
            +
                #   when :success
         
     | 
| 
      
 37 
     | 
    
         
            +
                #     puts prefix + message.green + postfix
         
     | 
| 
      
 38 
     | 
    
         
            +
                #   when :warn
         
     | 
| 
      
 39 
     | 
    
         
            +
                #     puts prefix + message.yellow + postfix
         
     | 
| 
      
 40 
     | 
    
         
            +
                #   when :error
         
     | 
| 
      
 41 
     | 
    
         
            +
                #     puts prefix + message.red + postfix
         
     | 
| 
      
 42 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 43 
     | 
    
         
            +
                # end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       34 
45 
     | 
    
         
             
              end
         
     | 
| 
       35 
46 
     | 
    
         
             
            end
         
     | 
| 
       36 
47 
     | 
    
         | 
    
        data/lib/blazing/recipe.rb
    CHANGED
    
    | 
         @@ -1,6 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'active_support/inflector'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'blazing'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       1 
4 
     | 
    
         
             
            module Blazing
         
     | 
| 
       2 
5 
     | 
    
         
             
              class Recipe
         
     | 
| 
       3 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
                # TODO: provide hooks for recipe to use bundle exec
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       4 
9 
     | 
    
         
             
                attr_accessor :name, :options
         
     | 
| 
       5 
10 
     | 
    
         | 
| 
       6 
11 
     | 
    
         
             
                def initialize(name, options = {})
         
     | 
| 
         @@ -8,23 +13,60 @@ module Blazing 
     | 
|
| 
       8 
13 
     | 
    
         
             
                  @options = options
         
     | 
| 
       9 
14 
     | 
    
         
             
                end
         
     | 
| 
       10 
15 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                def run
         
     | 
| 
      
 17 
     | 
    
         
            +
                  recipe_class.run if recipe_class
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def recipe_class
         
     | 
| 
      
 21 
     | 
    
         
            +
                  ('Blazing::' + (@name.to_s + '_recipe').camelize).constantize
         
     | 
| 
      
 22 
     | 
    
         
            +
                rescue NameError
         
     | 
| 
      
 23 
     | 
    
         
            +
                  Blazing::LOGGER.error "unable to load #{@name} recipe"
         
     | 
| 
      
 24 
     | 
    
         
            +
                  return nil
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def fail
         
     | 
| 
      
 28 
     | 
    
         
            +
                  raise 'NOT IMPLEMENTED'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  # TODO: implement meaningful default behaviour!
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                def success
         
     | 
| 
      
 33 
     | 
    
         
            +
                  raise 'NOT IMPLEMENTED'
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # TODO: implement meaningful default behaviour!
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
       13 
36 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            # TODO: provide setup, run and use methods and ability to override the whole recipe
         
     | 
| 
       16 
     | 
    
         
            -
            # TODO: Must be callable from global namespace and from remote block
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            # TODO:  make it easy to keep recipe externally and use git submodule
         
     | 
| 
       19 
     | 
    
         
            -
            #
         
     | 
| 
       20 
     | 
    
         
            -
            # TODO:  later, make it possible to keep recipe and setup of all projects in
         
     | 
| 
       21 
     | 
    
         
            -
            #    a central repo:
         
     | 
| 
       22 
     | 
    
         
            -
            #
         
     | 
| 
       23 
     | 
    
         
            -
            #    /recipes
         
     | 
| 
       24 
     | 
    
         
            -
            #    /projects/
         
     | 
| 
       25 
     | 
    
         
            -
            #      "   "   someproject.rb
         
     | 
| 
       26 
     | 
    
         
            -
            #      "   "   anotherpoject.rb
         
     | 
| 
       27 
     | 
    
         
            -
            #
         
     | 
| 
       28 
     | 
    
         
            -
            #
         
     | 
| 
       29 
     | 
    
         
            -
            #      ????
         
     | 
| 
      
 37 
     | 
    
         
            +
                class << self
         
     | 
| 
       30 
38 
     | 
    
         | 
| 
      
 39 
     | 
    
         
            +
                  def load_builtin_recipes
         
     | 
| 
      
 40 
     | 
    
         
            +
                    dir = File.join(File.dirname(__FILE__), "/recipes")
         
     | 
| 
      
 41 
     | 
    
         
            +
                    $LOAD_PATH.unshift(dir)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    Dir[File.join(dir, "*.rb")].each { |file| load File.basename(file) }
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                  def load_gem_recipes
         
     | 
| 
      
 46 
     | 
    
         
            +
                    #TODO: Implement
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                  def load_local_recipes
         
     | 
| 
      
 50 
     | 
    
         
            +
                    #TODO: Implement
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  #
         
     | 
| 
      
 54 
     | 
    
         
            +
                  # Return the list of available recipes based
         
     | 
| 
      
 55 
     | 
    
         
            +
                  # on class hierarchy
         
     | 
| 
      
 56 
     | 
    
         
            +
                  #
         
     | 
| 
      
 57 
     | 
    
         
            +
                  def list
         
     | 
| 
      
 58 
     | 
    
         
            +
                    descendants = []
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                    load_builtin_recipes
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                    ObjectSpace.each_object(Class) do |k|
         
     | 
| 
      
 63 
     | 
    
         
            +
                      descendants.unshift k if k < self
         
     | 
| 
      
 64 
     | 
    
         
            +
                    end
         
     | 
| 
      
 65 
     | 
    
         
            +
                    descendants.uniq!
         
     | 
| 
      
 66 
     | 
    
         
            +
                    descendants
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/blazing/remote.rb
    CHANGED
    
    | 
         @@ -1,15 +1,44 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Blazing
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Remote
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                # TODO: RVM
         
     | 
| 
       5 
     | 
    
         
            -
                # TODO: Bundler
         
     | 
| 
       6 
     | 
    
         
            -
                # TODO: Check if post-hook and blazing versions match
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
3 
     | 
    
         
             
                class << self
         
     | 
| 
       9 
4 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                  def post_receive( 
     | 
| 
      
 5 
     | 
    
         
            +
                  def post_receive(target_name)
         
     | 
| 
       11 
6 
     | 
    
         
             
                    set_git_dir
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
      
 7 
     | 
    
         
            +
                    target = config.find_target(target_name)
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                    # TODO: Check if post-hook and blazing versions match before doing anything
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    if target.recipes.blank?
         
     | 
| 
      
 12 
     | 
    
         
            +
                      target.recipes = config.recipes
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    # TODO: looks stupid. shorter way to do it?
         
     | 
| 
      
 16 
     | 
    
         
            +
                    use_rvm = target.recipes.find { |recipe| recipe.name == 'rvm' }
         
     | 
| 
      
 17 
     | 
    
         
            +
                    target.recipes.delete_if { |recipe| recipe.name == 'rvm' }
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    Blazing::Recipe.load_builtin_recipes
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    if use_rvm
         
     | 
| 
      
 22 
     | 
    
         
            +
                      use_rvm.run
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    if gemfile_present?
         
     | 
| 
      
 26 
     | 
    
         
            +
                      # TODO: Bundler setup or something
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                    target.recipes.each do |recipe|
         
     | 
| 
      
 30 
     | 
    
         
            +
                      recipe.run
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    reset_head!
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  def post_setup(target_name)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    # TODO: needed?
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  def gemfile_present?
         
     | 
| 
      
 41 
     | 
    
         
            +
                    File.exists? 'Gemfile'
         
     | 
| 
       13 
42 
     | 
    
         
             
                  end
         
     | 
| 
       14 
43 
     | 
    
         | 
| 
       15 
44 
     | 
    
         
             
                  def set_git_dir
         
     | 
| 
         @@ -19,25 +48,15 @@ module Blazing 
     | 
|
| 
       19 
48 
     | 
    
         
             
                    end
         
     | 
| 
       20 
49 
     | 
    
         
             
                  end
         
     | 
| 
       21 
50 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                  def reset_head
         
     | 
| 
      
 51 
     | 
    
         
            +
                  def reset_head!
         
     | 
| 
       23 
52 
     | 
    
         
             
                    system 'git reset --hard HEAD'
         
     | 
| 
       24 
53 
     | 
    
         
             
                  end
         
     | 
| 
       25 
54 
     | 
    
         | 
| 
      
 55 
     | 
    
         
            +
                  def config
         
     | 
| 
      
 56 
     | 
    
         
            +
                    Blazing::Config.load
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       26 
59 
     | 
    
         
             
                end
         
     | 
| 
       27 
60 
     | 
    
         | 
| 
       28 
61 
     | 
    
         
             
              end
         
     | 
| 
       29 
62 
     | 
    
         
             
            end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
            # if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
         
     | 
| 
       32 
     | 
    
         
            -
            #   begin
         
     | 
| 
       33 
     | 
    
         
            -
            #     rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
         
     | 
| 
       34 
     | 
    
         
            -
            #     rvm_lib_path = File.join(rvm_path, 'lib')
         
     | 
| 
       35 
     | 
    
         
            -
            #     $LOAD_PATH.unshift rvm_lib_path
         
     | 
| 
       36 
     | 
    
         
            -
            #     require 'rvm'
         
     | 
| 
       37 
     | 
    
         
            -
            #     RVM.use_from_path! File.dirname(File.dirname(__FILE__))
         
     | 
| 
       38 
     | 
    
         
            -
            #   rescue LoadError
         
     | 
| 
       39 
     | 
    
         
            -
            #     # RVM is unavailable at this point.
         
     | 
| 
       40 
     | 
    
         
            -
            #     raise "RVM ruby lib is currently unavailable."
         
     | 
| 
       41 
     | 
    
         
            -
            #   end
         
     | 
| 
       42 
     | 
    
         
            -
            # end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
    
        data/lib/blazing/target.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Blazing
         
     | 
| 
       2 
     | 
    
         
            -
              class Target 
     | 
| 
      
 2 
     | 
    
         
            +
              class Target
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
                attr_accessor :name
         
     | 
| 
      
 4 
     | 
    
         
            +
                attr_accessor :name, :recipes
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                @@configuration_options = [:deploy_to, :host, :user, :path, :default]
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
         @@ -26,11 +26,6 @@ module Blazing 
     | 
|
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                def setup
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  # TODO: Log some output?
         
     | 
| 
       31 
     | 
    
         
            -
                  # TODO: install post-receive hook and make it executable
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  config = Blazing::Config.load
         
     | 
| 
       34 
29 
     | 
    
         
             
                  clone_command = "if [ -e #{path} ]; then \
         
     | 
| 
       35 
30 
     | 
    
         
             
                                 echo 'directory exists already'; else \
         
     | 
| 
       36 
31 
     | 
    
         
             
                                 git clone #{config.repository} #{path} && cd #{path} && git config receive.denyCurrentBranch ignore; fi"
         
     | 
| 
         @@ -47,5 +42,9 @@ module Blazing 
     | 
|
| 
       47 
42 
     | 
    
         
             
                  system "git push #{name}"
         
     | 
| 
       48 
43 
     | 
    
         
             
                end
         
     | 
| 
       49 
44 
     | 
    
         | 
| 
      
 45 
     | 
    
         
            +
                def config
         
     | 
| 
      
 46 
     | 
    
         
            +
                  Blazing::Config.load
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       50 
49 
     | 
    
         
             
              end
         
     | 
| 
       51 
50 
     | 
    
         
             
            end
         
     | 
    
        data/lib/blazing/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,90 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'blazing/recipe'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe Blazing::Recipe do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              context 'initializer' do
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                it 'takes a string as name parameter' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                  recipe = Blazing::Recipe.new('some_recipe')
         
     | 
| 
      
 10 
     | 
    
         
            +
                  recipe.name.should == 'some_recipe'
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                it 'takes a symbol as name parameter and converts it to a string' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                  recipe = Blazing::Recipe.new(:some_recipe)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  recipe.name.should == 'some_recipe'
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it 'accepts options' do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  recipe = Blazing::Recipe.new(:some_recipe, :an_option => 'yeah')
         
     | 
| 
      
 20 
     | 
    
         
            +
                  recipe.options[:an_option].should == 'yeah'
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              context 'recipe discovery' do
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                it 'before loading them, no recipes are known' do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  lambda { Blazing::RvmRecipe }.should raise_error NameError
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                it 'can discover available recipes' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  recipes = Blazing::Recipe.list
         
     | 
| 
      
 33 
     | 
    
         
            +
                  recipes.should be_all { |recipe| recipe.superclass.should == Blazing::Recipe }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  recipes.each { |r| Blazing.send(:remove_const, r.name.to_s.gsub(/^.*::/, '')) }
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              context 'running recipes' do
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                # before :each do
         
     | 
| 
      
 42 
     | 
    
         
            +
                #   @logger = double('logger').as_null_object
         
     | 
| 
      
 43 
     | 
    
         
            +
                # end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                it 'delegate running a recipe to the recipe implementation' do
         
     | 
| 
      
 46 
     | 
    
         
            +
                  Blazing::Recipe.load_builtin_recipes
         
     | 
| 
      
 47 
     | 
    
         
            +
                  Blazing::RvmRecipe.should_receive(:run)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  Blazing::Recipe.new(:rvm).run
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                it 'construct the correct classname to use from recie name' do
         
     | 
| 
      
 52 
     | 
    
         
            +
                  Blazing::Recipe.new(:rvm).recipe_class.should == Blazing::RvmRecipe
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                it 'raise an error when a recipe has no run method defined' do
         
     | 
| 
      
 56 
     | 
    
         
            +
                  class Blazing::BlahRecipe < Blazing::Recipe; end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  lambda { Blazing::Recipe.new(:blah).run }.should raise_error NoMethodError
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                context 'unknown recipe' do
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  before :all do
         
     | 
| 
      
 63 
     | 
    
         
            +
                    @unknown_recipe_name = :undefined
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                  it 'does not crash when a recipe can not be loaded' do
         
     | 
| 
      
 67 
     | 
    
         
            +
                    lambda { Blazing::Recipe.new(@unknown_recipe_name).run }.should_not raise_error
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  it 'logs an error when a recipe cant be loaded' do
         
     | 
| 
      
 71 
     | 
    
         
            +
                    Blazing::LOGGER.should_receive(:error) # TODO: how should one do this?? .with("unable to laod #{@unknown_recipe_name} recipe")
         
     | 
| 
      
 72 
     | 
    
         
            +
                    Blazing::Recipe.new(:undefined).run
         
     | 
| 
      
 73 
     | 
    
         
            +
                  end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
              context 'builtin recipes' do
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                it 'include an rvm recipe' do
         
     | 
| 
      
 82 
     | 
    
         
            +
                  lambda { Blazing::RvmRecipe }.should_not raise_error NameError
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                it 'include a bundler recipe' do
         
     | 
| 
      
 86 
     | 
    
         
            +
                  lambda { Blazing::BundlerRecipe }.should_not raise_error NameError
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,12 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: blazing
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              prerelease:  
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
              - 0
         
     | 
| 
       7 
     | 
    
         
            -
              - 0
         
     | 
| 
       8 
     | 
    
         
            -
              - 4
         
     | 
| 
       9 
     | 
    
         
            -
              version: 0.0.4
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.0.5
         
     | 
| 
       10 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
7 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
8 
     | 
    
         
             
            - Felipe Kaufmann
         
     | 
| 
         @@ -14,7 +10,7 @@ autorequire: 
     | 
|
| 
       14 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
12 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            date: 2011- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2011-04-12 00:00:00 +02:00
         
     | 
| 
       18 
14 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
15 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       20 
16 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -25,13 +21,31 @@ dependencies: 
     | 
|
| 
       25 
21 
     | 
    
         
             
                requirements: 
         
     | 
| 
       26 
22 
     | 
    
         
             
                - - ">="
         
     | 
| 
       27 
23 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       28 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       29 
     | 
    
         
            -
                    - 0
         
     | 
| 
       30 
     | 
    
         
            -
                    - 14
         
     | 
| 
       31 
     | 
    
         
            -
                    - 6
         
     | 
| 
       32 
24 
     | 
    
         
             
                    version: 0.14.6
         
     | 
| 
       33 
25 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
26 
     | 
    
         
             
              version_requirements: *id001
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: activesupport
         
     | 
| 
      
 29 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 30 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 31 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 32 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 33 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 34 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 35 
     | 
    
         
            +
                    version: 3.0.5
         
     | 
| 
      
 36 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 37 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 38 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 39 
     | 
    
         
            +
              name: i18n
         
     | 
| 
      
 40 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 41 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 42 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 43 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 44 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 45 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 46 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 47 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 48 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
       35 
49 
     | 
    
         
             
            description: git push deployent utility, ready to be extended by your own recipes
         
     | 
| 
       36 
50 
     | 
    
         
             
            email: 
         
     | 
| 
       37 
51 
     | 
    
         
             
            - felipekaufmann@gmail.com
         
     | 
| 
         @@ -43,12 +57,16 @@ extra_rdoc_files: [] 
     | 
|
| 
       43 
57 
     | 
    
         | 
| 
       44 
58 
     | 
    
         
             
            files: 
         
     | 
| 
       45 
59 
     | 
    
         
             
            - .gitignore
         
     | 
| 
      
 60 
     | 
    
         
            +
            - .rvmrc
         
     | 
| 
       46 
61 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       47 
62 
     | 
    
         
             
            - Gemfile.lock
         
     | 
| 
      
 63 
     | 
    
         
            +
            - Guardfile
         
     | 
| 
      
 64 
     | 
    
         
            +
            - MIT-LICENCE
         
     | 
| 
       48 
65 
     | 
    
         
             
            - README.md
         
     | 
| 
       49 
66 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       50 
67 
     | 
    
         
             
            - bin/blazing
         
     | 
| 
       51 
68 
     | 
    
         
             
            - blazing.gemspec
         
     | 
| 
      
 69 
     | 
    
         
            +
            - index.html
         
     | 
| 
       52 
70 
     | 
    
         
             
            - lib/blazing.rb
         
     | 
| 
       53 
71 
     | 
    
         
             
            - lib/blazing/cli/base.rb
         
     | 
| 
       54 
72 
     | 
    
         
             
            - lib/blazing/cli/create.rb
         
     | 
| 
         @@ -60,9 +78,14 @@ files: 
     | 
|
| 
       60 
78 
     | 
    
         
             
            - lib/blazing/logger.rb
         
     | 
| 
       61 
79 
     | 
    
         
             
            - lib/blazing/object.rb
         
     | 
| 
       62 
80 
     | 
    
         
             
            - lib/blazing/recipe.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/blazing/recipes/bundler_recipe.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/blazing/recipes/rvm_recipe.rb
         
     | 
| 
       63 
83 
     | 
    
         
             
            - lib/blazing/remote.rb
         
     | 
| 
       64 
84 
     | 
    
         
             
            - lib/blazing/target.rb
         
     | 
| 
       65 
85 
     | 
    
         
             
            - lib/blazing/version.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - spec/blazing/recipe_spec.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - spec/blazing/remote_spec.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
       66 
89 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       67 
90 
     | 
    
         
             
            homepage: https://github.com/effkay/blazing
         
     | 
| 
       68 
91 
     | 
    
         
             
            licenses: []
         
     | 
| 
         @@ -77,23 +100,21 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       77 
100 
     | 
    
         
             
              requirements: 
         
     | 
| 
       78 
101 
     | 
    
         
             
              - - ">="
         
     | 
| 
       79 
102 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       80 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       81 
     | 
    
         
            -
                  - 0
         
     | 
| 
       82 
103 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       83 
104 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       84 
105 
     | 
    
         
             
              none: false
         
     | 
| 
       85 
106 
     | 
    
         
             
              requirements: 
         
     | 
| 
       86 
107 
     | 
    
         
             
              - - ">="
         
     | 
| 
       87 
108 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       88 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       89 
     | 
    
         
            -
                  - 0
         
     | 
| 
       90 
109 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       91 
110 
     | 
    
         
             
            requirements: []
         
     | 
| 
       92 
111 
     | 
    
         | 
| 
       93 
112 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       94 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 113 
     | 
    
         
            +
            rubygems_version: 1.6.2
         
     | 
| 
       95 
114 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       96 
115 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       97 
116 
     | 
    
         
             
            summary: blazing fast deployment
         
     | 
| 
       98 
     | 
    
         
            -
            test_files:  
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
      
 117 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 118 
     | 
    
         
            +
            - spec/blazing/recipe_spec.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - spec/blazing/remote_spec.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     |