colorful-mina 0.3.1
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.
- checksums.yaml +7 -0
 - data/.gitignore +10 -0
 - data/.rspec +1 -0
 - data/.travis.yml +21 -0
 - data/CONTRIBUTING.md +124 -0
 - data/Gemfile +10 -0
 - data/HISTORY.md +348 -0
 - data/LICENSE +23 -0
 - data/Makefile +29 -0
 - data/Notes.md +70 -0
 - data/README.md +1015 -0
 - data/Rakefile +20 -0
 - data/bin/mina +65 -0
 - data/data/deploy.rb +80 -0
 - data/data/deploy.sh.erb +106 -0
 - data/lib/mina.rb +23 -0
 - data/lib/mina/bundler.rb +49 -0
 - data/lib/mina/chruby.rb +49 -0
 - data/lib/mina/default.rb +145 -0
 - data/lib/mina/deploy.rb +138 -0
 - data/lib/mina/deploy_helpers.rb +34 -0
 - data/lib/mina/exec_helpers.rb +111 -0
 - data/lib/mina/foreman.rb +82 -0
 - data/lib/mina/git.rb +62 -0
 - data/lib/mina/helpers.rb +386 -0
 - data/lib/mina/output_helpers.rb +95 -0
 - data/lib/mina/rails.rb +206 -0
 - data/lib/mina/rake.rb +9 -0
 - data/lib/mina/rbenv.rb +47 -0
 - data/lib/mina/rvm.rb +88 -0
 - data/lib/mina/settings.rb +32 -0
 - data/lib/mina/ssh_helpers.rb +123 -0
 - data/lib/mina/tools.rb +20 -0
 - data/lib/mina/version.rb +5 -0
 - data/lib/mina/whenever.rb +27 -0
 - data/manual/index.md +15 -0
 - data/manual/modules.md +2 -0
 - data/mina.gemspec +17 -0
 - data/spec/command_helper.rb +52 -0
 - data/spec/commands/cleanup_spec.rb +16 -0
 - data/spec/commands/command_spec.rb +71 -0
 - data/spec/commands/custom_config_spec.rb +20 -0
 - data/spec/commands/deploy_spec.rb +36 -0
 - data/spec/commands/outside_project_spec.rb +35 -0
 - data/spec/commands/real_deploy_spec.rb +53 -0
 - data/spec/commands/ssh_spec.rb +14 -0
 - data/spec/commands/verbose_spec.rb +21 -0
 - data/spec/dsl/invoke_spec.rb +48 -0
 - data/spec/dsl/queue_spec.rb +49 -0
 - data/spec/dsl/settings_in_rake_spec.rb +39 -0
 - data/spec/dsl/settings_spec.rb +61 -0
 - data/spec/dsl/to_spec.rb +20 -0
 - data/spec/fixtures/custom_file_env/custom_deploy.rb +15 -0
 - data/spec/fixtures/empty_env/config/deploy.rb +15 -0
 - data/spec/helpers/exec_helper_spec.rb +19 -0
 - data/spec/helpers/output_helper_spec.rb +24 -0
 - data/spec/spec_helper.rb +27 -0
 - data/support/Readme-footer.md +32 -0
 - data/support/Readme-header.md +16 -0
 - data/support/guide.md +297 -0
 - data/support/index.html +53 -0
 - data/support/to_md.rb +11 -0
 - data/test_env/config/deploy.rb +69 -0
 - metadata +150 -0
 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bundler'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'bundler/gem_tasks'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            github = ENV['github'] || 'nadarei/mina'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            task :spec do
         
     | 
| 
      
 7 
     | 
    
         
            +
              system "rm Gemfile.lock; sh -c 'rake=0.8 bundle exec rspec'"
         
     | 
| 
      
 8 
     | 
    
         
            +
              system "rm Gemfile.lock; sh -c 'rake=0.9 bundle exec rspec'"
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            task :docs do
         
     | 
| 
      
 12 
     | 
    
         
            +
              files = ['manual/index.md', 'manual/modules.md', 'HISTORY.md'] + Dir['lib/**/*.rb']
         
     | 
| 
      
 13 
     | 
    
         
            +
              system "lidoc #{files.join ' '} -o docs --github #{github}"
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            task :'docs:deploy' => :docs do
         
     | 
| 
      
 17 
     | 
    
         
            +
              system "git-update-ghpages #{github} -i docs -p docs"
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            task :default => :spec
         
     | 
    
        data/bin/mina
    ADDED
    
    | 
         @@ -0,0 +1,65 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.unshift File.expand_path('../../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rubygems' unless Object.const_defined?(:Gem)
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'mina'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            # Intercept: if invoked as 'mina --help', don't let it pass through Rake, or else
         
     | 
| 
      
 9 
     | 
    
         
            +
            # we'll see the Rake help screen. Redirect it to 'mina help'.
         
     | 
| 
      
 10 
     | 
    
         
            +
            if ARGV.delete('--help') || ARGV.delete('-h')
         
     | 
| 
      
 11 
     | 
    
         
            +
              ARGV << 'help'
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            if ARGV.delete('--version') || ARGV.delete('-V')
         
     | 
| 
      
 15 
     | 
    
         
            +
              puts "Mina, version v#{Mina.version}"
         
     | 
| 
      
 16 
     | 
    
         
            +
              exit
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            if ARGV.delete('--simulate') || ARGV.delete('-S')
         
     | 
| 
      
 20 
     | 
    
         
            +
              ENV['simulate'] = '1'
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            scope = self
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Rake.application.instance_eval do
         
     | 
| 
      
 26 
     | 
    
         
            +
              standard_exception_handling do
         
     | 
| 
      
 27 
     | 
    
         
            +
                begin
         
     | 
| 
      
 28 
     | 
    
         
            +
                  # Initialize Rake and make it think it's Mina.
         
     | 
| 
      
 29 
     | 
    
         
            +
                  init 'mina'
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  # (The only way @rakefiles has only 1 value is if -f is specified.)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  custom_rakefile = (@rakefiles.size == 1)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @rakefiles = ['Minafile', 'config/deploy.rb']  unless custom_rakefile
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  # Workaround: Rake 0.9+ doesn't record task descriptions unless it's needed.
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # Need it for 'mina help'
         
     | 
| 
      
 37 
     | 
    
         
            +
                  if Rake::TaskManager.respond_to?(:record_task_metadata)
         
     | 
| 
      
 38 
     | 
    
         
            +
                    Rake::TaskManager.record_task_metadata = true
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                  # Load the Mina Rake DSL.
         
     | 
| 
      
 42 
     | 
    
         
            +
                  require 'mina/rake'
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  # Allow running without a Rakefile
         
     | 
| 
      
 45 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 46 
     | 
    
         
            +
                    load_rakefile  if have_rakefile || custom_rakefile
         
     | 
| 
      
 47 
     | 
    
         
            +
                  rescue Exception
         
     | 
| 
      
 48 
     | 
    
         
            +
                    puts "Error loading Rakefile!"
         
     | 
| 
      
 49 
     | 
    
         
            +
                    raise "There may be a problem with config/deploy.rb and/or Rakefile"
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  # Run tasks
         
     | 
| 
      
 53 
     | 
    
         
            +
                  top_level
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  scope.mina_cleanup! if top_level_tasks.any?
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                rescue Mina::Failed => e
         
     | 
| 
      
 58 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 59 
     | 
    
         
            +
                  scope.print_error "Command failed."
         
     | 
| 
      
 60 
     | 
    
         
            +
                  scope.print_stderr "#{e.message}"
         
     | 
| 
      
 61 
     | 
    
         
            +
                  exit(e.exitstatus > 255 ? e.exitstatus >> 8 : e.exitstatus)
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
    
        data/data/deploy.rb
    ADDED
    
    | 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'mina/bundler'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'mina/rails'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'mina/git'
         
     | 
| 
      
 4 
     | 
    
         
            +
            # require 'mina/rbenv'  # for rbenv support. (http://rbenv.org)
         
     | 
| 
      
 5 
     | 
    
         
            +
            # require 'mina/rvm'    # for rvm support. (http://rvm.io)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            # Basic settings:
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   domain       - The hostname to SSH to.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   deploy_to    - Path to deploy into.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #   repository   - Git repo to clone from. (needed by mina/git)
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   branch       - Branch name to deploy. (needed by mina/git)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            set :domain, 'foobar.com'
         
     | 
| 
      
 14 
     | 
    
         
            +
            set :deploy_to, '/var/www/foobar.com'
         
     | 
| 
      
 15 
     | 
    
         
            +
            set :repository, 'git://...'
         
     | 
| 
      
 16 
     | 
    
         
            +
            set :branch, 'master'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            # For system-wide RVM install.
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   set :rvm_path, '/usr/local/rvm/bin/rvm'
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            # Manually create these paths in shared/ (eg: shared/config/database.yml) in your server.
         
     | 
| 
      
 22 
     | 
    
         
            +
            # They will be linked in the 'deploy:link_shared_paths' step.
         
     | 
| 
      
 23 
     | 
    
         
            +
            set :shared_paths, ['config/database.yml', 'log']
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            # Optional settings:
         
     | 
| 
      
 26 
     | 
    
         
            +
            #   set :user, 'foobar'    # Username in the server to SSH to.
         
     | 
| 
      
 27 
     | 
    
         
            +
            #   set :port, '30000'     # SSH port number.
         
     | 
| 
      
 28 
     | 
    
         
            +
            #   set :forward_agent, true     # SSH forward_agent.
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            # This task is the environment that is loaded for most commands, such as
         
     | 
| 
      
 31 
     | 
    
         
            +
            # `mina deploy` or `mina rake`.
         
     | 
| 
      
 32 
     | 
    
         
            +
            task :environment do
         
     | 
| 
      
 33 
     | 
    
         
            +
              # If you're using rbenv, use this to load the rbenv environment.
         
     | 
| 
      
 34 
     | 
    
         
            +
              # Be sure to commit your .ruby-version or .rbenv-version to your repository.
         
     | 
| 
      
 35 
     | 
    
         
            +
              # invoke :'rbenv:load'
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              # For those using RVM, use this to load an RVM version@gemset.
         
     | 
| 
      
 38 
     | 
    
         
            +
              # invoke :'rvm:use[ruby-1.9.3-p125@default]'
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            # Put any custom mkdir's in here for when `mina setup` is ran.
         
     | 
| 
      
 42 
     | 
    
         
            +
            # For Rails apps, we'll make some of the shared paths that are shared between
         
     | 
| 
      
 43 
     | 
    
         
            +
            # all releases.
         
     | 
| 
      
 44 
     | 
    
         
            +
            task :setup => :environment do
         
     | 
| 
      
 45 
     | 
    
         
            +
              queue! %[mkdir -p "#{deploy_to}/#{shared_path}/log"]
         
     | 
| 
      
 46 
     | 
    
         
            +
              queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/log"]
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              queue! %[mkdir -p "#{deploy_to}/#{shared_path}/config"]
         
     | 
| 
      
 49 
     | 
    
         
            +
              queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/config"]
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              queue! %[touch "#{deploy_to}/#{shared_path}/config/database.yml"]
         
     | 
| 
      
 52 
     | 
    
         
            +
              queue  %[echo "-----> Be sure to edit '#{deploy_to}/#{shared_path}/config/database.yml'."]
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            desc "Deploys the current version to the server."
         
     | 
| 
      
 56 
     | 
    
         
            +
            task :deploy => :environment do
         
     | 
| 
      
 57 
     | 
    
         
            +
              deploy do
         
     | 
| 
      
 58 
     | 
    
         
            +
                # Put things that will set up an empty directory into a fully set-up
         
     | 
| 
      
 59 
     | 
    
         
            +
                # instance of your project.
         
     | 
| 
      
 60 
     | 
    
         
            +
                invoke :'git:clone'
         
     | 
| 
      
 61 
     | 
    
         
            +
                invoke :'deploy:link_shared_paths'
         
     | 
| 
      
 62 
     | 
    
         
            +
                invoke :'bundle:install'
         
     | 
| 
      
 63 
     | 
    
         
            +
                invoke :'rails:db_migrate'
         
     | 
| 
      
 64 
     | 
    
         
            +
                invoke :'rails:assets_precompile'
         
     | 
| 
      
 65 
     | 
    
         
            +
                invoke :'deploy:cleanup'
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                to :launch do
         
     | 
| 
      
 68 
     | 
    
         
            +
                  queue "mkdir -p #{deploy_to}/#{current_path}/tmp/"
         
     | 
| 
      
 69 
     | 
    
         
            +
                  queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            # For help in making your deploy script, see the Mina documentation:
         
     | 
| 
      
 75 
     | 
    
         
            +
            #
         
     | 
| 
      
 76 
     | 
    
         
            +
            #  - http://nadarei.co/mina
         
     | 
| 
      
 77 
     | 
    
         
            +
            #  - http://nadarei.co/mina/tasks
         
     | 
| 
      
 78 
     | 
    
         
            +
            #  - http://nadarei.co/mina/settings
         
     | 
| 
      
 79 
     | 
    
         
            +
            #  - http://nadarei.co/mina/helpers
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
    
        data/data/deploy.sh.erb
    ADDED
    
    | 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%
         
     | 
| 
      
 2 
     | 
    
         
            +
              prepare = commands(:default).map { |s| "(\n\n#{indent 2, s}\n\n)" }.join(" && ")
         
     | 
| 
      
 3 
     | 
    
         
            +
              launch  = commands(:launch).map  { |s| "(\n\n#{indent 2, s}\n\n)" }.join(" && ")
         
     | 
| 
      
 4 
     | 
    
         
            +
              clean   = commands(:clean).map   { |s| "(\n\n#{indent 2, s}\n\n)" }.join(" && ")
         
     | 
| 
      
 5 
     | 
    
         
            +
            %>
         
     | 
| 
      
 6 
     | 
    
         
            +
            #!/usr/bin/env bash
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            # Go to the deploy path
         
     | 
| 
      
 9 
     | 
    
         
            +
            cd "<%= deploy_to %>" || (
         
     | 
| 
      
 10 
     | 
    
         
            +
              echo "! ERROR: not set up."
         
     | 
| 
      
 11 
     | 
    
         
            +
              echo "The path '<%= deploy_to %>' is not accessible on the server."
         
     | 
| 
      
 12 
     | 
    
         
            +
              echo "You may need to run 'mina setup' first."
         
     | 
| 
      
 13 
     | 
    
         
            +
              false
         
     | 
| 
      
 14 
     | 
    
         
            +
            ) || exit 15
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            # Check releases path
         
     | 
| 
      
 17 
     | 
    
         
            +
            if [ ! -d "<%= releases_path %>" ]; then
         
     | 
| 
      
 18 
     | 
    
         
            +
              echo "! ERROR: not set up."
         
     | 
| 
      
 19 
     | 
    
         
            +
              echo "The directory '<%= releases_path %>' does not exist on the server."
         
     | 
| 
      
 20 
     | 
    
         
            +
              echo "You may need to run 'mina setup' first."
         
     | 
| 
      
 21 
     | 
    
         
            +
              exit 16
         
     | 
| 
      
 22 
     | 
    
         
            +
            fi
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            # Check lockfile
         
     | 
| 
      
 25 
     | 
    
         
            +
            if [ -e "<%= lock_file %>" ]; then
         
     | 
| 
      
 26 
     | 
    
         
            +
              echo "! ERROR: another deployment is ongoing."
         
     | 
| 
      
 27 
     | 
    
         
            +
              echo "The file '<%= lock_file %>' was found."
         
     | 
| 
      
 28 
     | 
    
         
            +
              echo "If no other deployment is ongoing, delete the file to continue."
         
     | 
| 
      
 29 
     | 
    
         
            +
              exit 17
         
     | 
| 
      
 30 
     | 
    
         
            +
            fi
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            # Determine $previous_path and other variables
         
     | 
| 
      
 33 
     | 
    
         
            +
            [ -h "<%= current_path %>" ] && [ -d "<%= current_path %>" ] && previous_path=$(cd "<%= current_path %>" >/dev/null && pwd -LP)
         
     | 
| 
      
 34 
     | 
    
         
            +
            build_path="./tmp/build-`date +%s`$RANDOM"
         
     | 
| 
      
 35 
     | 
    
         
            +
            version=$((`cat "<%= deploy_to %>/last_version" 2>/dev/null`+1))
         
     | 
| 
      
 36 
     | 
    
         
            +
            release_path="<%= releases_path %>/$version"
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            # Sanity check
         
     | 
| 
      
 39 
     | 
    
         
            +
            if [ -e "$build_path" ]; then
         
     | 
| 
      
 40 
     | 
    
         
            +
              echo "! ERROR: Path already exists."
         
     | 
| 
      
 41 
     | 
    
         
            +
              exit 18
         
     | 
| 
      
 42 
     | 
    
         
            +
            fi
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            # Bootstrap script (in deployer)
         
     | 
| 
      
 45 
     | 
    
         
            +
            (
         
     | 
| 
      
 46 
     | 
    
         
            +
              <%= print_str '-> Creating a temporary build path' %>
         
     | 
| 
      
 47 
     | 
    
         
            +
              <%= echo_cmd %[touch "#{lock_file}"] %> &&
         
     | 
| 
      
 48 
     | 
    
         
            +
              <%= echo_cmd %[mkdir -p "$build_path"] %> &&
         
     | 
| 
      
 49 
     | 
    
         
            +
              <%= echo_cmd %[cd "$build_path"] %> &&
         
     | 
| 
      
 50 
     | 
    
         
            +
              (
         
     | 
| 
      
 51 
     | 
    
         
            +
            <%= indent 4, (prepare.empty? ? "true" : prepare) %>
         
     | 
| 
      
 52 
     | 
    
         
            +
              )
         
     | 
| 
      
 53 
     | 
    
         
            +
            ) &&
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            #
         
     | 
| 
      
 56 
     | 
    
         
            +
            # Rename to the real release path, then symlink 'current'
         
     | 
| 
      
 57 
     | 
    
         
            +
            (
         
     | 
| 
      
 58 
     | 
    
         
            +
              <%= print_str '-> Build finished' %>
         
     | 
| 
      
 59 
     | 
    
         
            +
              <%= print_str '-> Moving build to $release_path' %>
         
     | 
| 
      
 60 
     | 
    
         
            +
              <%= echo_cmd %[mv "$build_path" "$release_path"] %> &&
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              <%= print_str "-> Updating the " + current_path + " symlink" %> &&
         
     | 
| 
      
 63 
     | 
    
         
            +
              <%= echo_cmd %[ln -nfs "$release_path" "#{current_path}"] %>
         
     | 
| 
      
 64 
     | 
    
         
            +
            ) &&
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            # ============================
         
     | 
| 
      
 67 
     | 
    
         
            +
            # === Start up serve => (in deployer)
         
     | 
| 
      
 68 
     | 
    
         
            +
            (
         
     | 
| 
      
 69 
     | 
    
         
            +
              <%= print_str '-> Launching' %>
         
     | 
| 
      
 70 
     | 
    
         
            +
              <%= echo_cmd %[cd "$release_path"] %>
         
     | 
| 
      
 71 
     | 
    
         
            +
            <%= indent 2, (launch.empty? ? "true" : launch) %>
         
     | 
| 
      
 72 
     | 
    
         
            +
            ) &&
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            # ============================
         
     | 
| 
      
 75 
     | 
    
         
            +
            # === Complete & unlock
         
     | 
| 
      
 76 
     | 
    
         
            +
            (
         
     | 
| 
      
 77 
     | 
    
         
            +
              rm -f "<%= lock_file %>"
         
     | 
| 
      
 78 
     | 
    
         
            +
              echo "$version" > "./last_version"
         
     | 
| 
      
 79 
     | 
    
         
            +
              <%= print_str "-> Done. Deployed v$version" %>
         
     | 
| 
      
 80 
     | 
    
         
            +
            ) ||
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            # ============================
         
     | 
| 
      
 83 
     | 
    
         
            +
            # === Failed deployment
         
     | 
| 
      
 84 
     | 
    
         
            +
            (
         
     | 
| 
      
 85 
     | 
    
         
            +
              <%= print_str('! ERROR: Deploy failed.') %>
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            <%= indent 2, clean %>
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              echo "-----> Cleaning up build"
         
     | 
| 
      
 90 
     | 
    
         
            +
              [ -e "$build_path" ] && (
         
     | 
| 
      
 91 
     | 
    
         
            +
                <%= echo_cmd %[rm -rf "$build_path"] %>
         
     | 
| 
      
 92 
     | 
    
         
            +
              )
         
     | 
| 
      
 93 
     | 
    
         
            +
              [ -e "$release_path" ] && (
         
     | 
| 
      
 94 
     | 
    
         
            +
                <%= print_str 'Deleting release' %>
         
     | 
| 
      
 95 
     | 
    
         
            +
                <%= echo_cmd %[rm -rf "$release_path"] %>
         
     | 
| 
      
 96 
     | 
    
         
            +
              )
         
     | 
| 
      
 97 
     | 
    
         
            +
              (
         
     | 
| 
      
 98 
     | 
    
         
            +
                echo "Unlinking current"
         
     | 
| 
      
 99 
     | 
    
         
            +
                [ -n "$previous_path" ] && <%= echo_cmd %[ln -nfs "$previous_path" "#{current_path}"] %>
         
     | 
| 
      
 100 
     | 
    
         
            +
              )
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
              # Unlock
         
     | 
| 
      
 103 
     | 
    
         
            +
              <%= echo_cmd %[rm -f "#{lock_file}"] %>
         
     | 
| 
      
 104 
     | 
    
         
            +
              echo "OK"
         
     | 
| 
      
 105 
     | 
    
         
            +
              exit 19
         
     | 
| 
      
 106 
     | 
    
         
            +
            )
         
     | 
    
        data/lib/mina.rb
    ADDED
    
    | 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Mina
         
     | 
| 
      
 2 
     | 
    
         
            +
              PREFIX = File.dirname(__FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
              ROOT = File.expand_path('../../', __FILE__)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              require 'mina/version'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              autoload :DeployHelpers, 'mina/deploy_helpers'
         
     | 
| 
      
 8 
     | 
    
         
            +
              autoload :OutputHelpers, 'mina/output_helpers'
         
     | 
| 
      
 9 
     | 
    
         
            +
              autoload :SshHelpers, 'mina/ssh_helpers'
         
     | 
| 
      
 10 
     | 
    
         
            +
              autoload :ExecHelpers, 'mina/exec_helpers'
         
     | 
| 
      
 11 
     | 
    
         
            +
              autoload :Helpers, 'mina/helpers'
         
     | 
| 
      
 12 
     | 
    
         
            +
              autoload :Settings, 'mina/settings'
         
     | 
| 
      
 13 
     | 
    
         
            +
              autoload :Tools, 'mina/tools'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              Error = Class.new(Exception)
         
     | 
| 
      
 16 
     | 
    
         
            +
              class Failed < Error
         
     | 
| 
      
 17 
     | 
    
         
            +
                attr_accessor :exitstatus
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def self.root_path(*a)
         
     | 
| 
      
 21 
     | 
    
         
            +
                File.join ROOT, *a
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/mina/bundler.rb
    ADDED
    
    | 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # # Modules: Bundler
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Adds settings and tasks for managing Ruby Bundler.
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            #     require 'mina/bundler'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # ## Settings
         
     | 
| 
      
 7 
     | 
    
         
            +
            # Any and all of these settings can be overriden in your `deploy.rb`.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # ### bundle_bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            # Sets the bundle path.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            set_default :bundle_bin, 'bundle'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            # ### bundle_path
         
     | 
| 
      
 15 
     | 
    
         
            +
            # Sets the path to where the gems are expected to be.
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
            # This path will be symlinked to `./shared/bundle` so that the gems cache will
         
     | 
| 
      
 18 
     | 
    
         
            +
            # be shared between all releases.
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            set_default :bundle_path, './vendor/bundle'
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            # ### bundle_withouts
         
     | 
| 
      
 23 
     | 
    
         
            +
            # Sets the colon-separated list of groups to be skipped from installation.
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            set_default :bundle_withouts, 'development:test'
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            # ### bundle_options
         
     | 
| 
      
 28 
     | 
    
         
            +
            # Sets the options for installing gems via Bundler.
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            set_default :bundle_options, lambda { %{--without #{bundle_withouts} --path "#{bundle_path}" --deployment} }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            # ## Deploy tasks
         
     | 
| 
      
 33 
     | 
    
         
            +
            # These tasks are meant to be invoked inside deploy scripts, not invoked on
         
     | 
| 
      
 34 
     | 
    
         
            +
            # their own.
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            namespace :bundle do
         
     | 
| 
      
 37 
     | 
    
         
            +
              # ### bundle:install
         
     | 
| 
      
 38 
     | 
    
         
            +
              # Installs gems.
         
     | 
| 
      
 39 
     | 
    
         
            +
              desc "Install gem dependencies using Bundler."
         
     | 
| 
      
 40 
     | 
    
         
            +
              task :install do
         
     | 
| 
      
 41 
     | 
    
         
            +
                queue %{
         
     | 
| 
      
 42 
     | 
    
         
            +
                  #{print_str '-> Installing gem dependencies using Bundler'}
         
     | 
| 
      
 43 
     | 
    
         
            +
                  #{echo_cmd %[mkdir -p "#{deploy_to}/#{shared_path}/bundle"]}
         
     | 
| 
      
 44 
     | 
    
         
            +
                  #{echo_cmd %[mkdir -p "#{File.dirname bundle_path}"]}
         
     | 
| 
      
 45 
     | 
    
         
            +
                  #{echo_cmd %[ln -s "#{deploy_to}/#{shared_path}/bundle" "#{bundle_path}"]}
         
     | 
| 
      
 46 
     | 
    
         
            +
                  #{echo_cmd %[#{bundle_bin} install #{bundle_options}]}
         
     | 
| 
      
 47 
     | 
    
         
            +
                }
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/mina/chruby.rb
    ADDED
    
    | 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # # Modules: chruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Adds settings and tasks for managing [chruby] installations.
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # [chruby]: https://github.com/postmodern/chruby
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            #     require 'mina/chruby'
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # ## Common usage
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     task :environment do
         
     | 
| 
      
 11 
     | 
    
         
            +
            #       invoke :'chruby[ruby-1.9.3-p392]'
         
     | 
| 
      
 12 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            #     task :deploy => :environment do
         
     | 
| 
      
 15 
     | 
    
         
            +
            #       ...
         
     | 
| 
      
 16 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            # ## Settings
         
     | 
| 
      
 19 
     | 
    
         
            +
            # Any and all of these settings can be overriden in your `deploy.rb`.
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            # ### chruby_path
         
     | 
| 
      
 22 
     | 
    
         
            +
            # Path where *chruby* init scripts are installed.
         
     | 
| 
      
 23 
     | 
    
         
            +
            #
         
     | 
| 
      
 24 
     | 
    
         
            +
            set_default :chruby_path, "/etc/profile.d/chruby.sh"
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            # ## Tasks
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            # ### chruby[version]
         
     | 
| 
      
 29 
     | 
    
         
            +
            # Switch to given Ruby version
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            task :chruby, :env do |t, args|
         
     | 
| 
      
 32 
     | 
    
         
            +
              unless args[:env]
         
     | 
| 
      
 33 
     | 
    
         
            +
                print_error "Task 'chruby' needs a Ruby version as an argument."
         
     | 
| 
      
 34 
     | 
    
         
            +
                print_error "Example: invoke :'chruby[ruby-1.9.3-p392]'"
         
     | 
| 
      
 35 
     | 
    
         
            +
                die
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              queue %{
         
     | 
| 
      
 39 
     | 
    
         
            +
                echo "-----> chruby to version: '#{args[:env]}'"
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                if [[ ! -s "#{chruby_path}" ]]; then
         
     | 
| 
      
 42 
     | 
    
         
            +
                  echo "! chruby.sh init file not found"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  exit 1
         
     | 
| 
      
 44 
     | 
    
         
            +
                fi
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                source #{chruby_path}
         
     | 
| 
      
 47 
     | 
    
         
            +
                #{echo_cmd %{chruby "#{args[:env]}"}} || exit 1
         
     | 
| 
      
 48 
     | 
    
         
            +
              }
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/mina/default.rb
    ADDED
    
    | 
         @@ -0,0 +1,145 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # # Modules: Default
         
     | 
| 
      
 2 
     | 
    
         
            +
            # This module is loaded when invoking `mina` with or without a project.
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # ## Settings
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Here are some of the common settings. All settings are optional unless
         
     | 
| 
      
 6 
     | 
    
         
            +
            # otherwise noted.
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # ### deploy_to
         
     | 
| 
      
 9 
     | 
    
         
            +
            # (Required) Path to deploy to.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # ### domain
         
     | 
| 
      
 12 
     | 
    
         
            +
            # (Required) Host name to deploy to.
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            # ### port
         
     | 
| 
      
 15 
     | 
    
         
            +
            # SSH port number.
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
            # ### forward_agent
         
     | 
| 
      
 18 
     | 
    
         
            +
            # If set to `true`, enables SSH agent forwarding.
         
     | 
| 
      
 19 
     | 
    
         
            +
            #
         
     | 
| 
      
 20 
     | 
    
         
            +
            # ### identity_file
         
     | 
| 
      
 21 
     | 
    
         
            +
            # The local path to the SSH private key file.
         
     | 
| 
      
 22 
     | 
    
         
            +
            #
         
     | 
| 
      
 23 
     | 
    
         
            +
            # ### ssh_options
         
     | 
| 
      
 24 
     | 
    
         
            +
            # Switches to be passed to the `ssh` command.
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            # ## Tasks
         
     | 
| 
      
 27 
     | 
    
         
            +
            # Any and all of these settings can be overriden in your `deploy.rb`.
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            # ### environment
         
     | 
| 
      
 30 
     | 
    
         
            +
            # Make the `:environment` task exist by default. This is meant to be overridden
         
     | 
| 
      
 31 
     | 
    
         
            +
            # by users.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            task :environment do
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            # ### init
         
     | 
| 
      
 37 
     | 
    
         
            +
            # Initializes a new Mina project.
         
     | 
| 
      
 38 
     | 
    
         
            +
            #
         
     | 
| 
      
 39 
     | 
    
         
            +
            #     $ mina init
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            desc "Creates a sample config file."
         
     | 
| 
      
 42 
     | 
    
         
            +
            task :init => :environment do
         
     | 
| 
      
 43 
     | 
    
         
            +
              name = Rake.application.name
         
     | 
| 
      
 44 
     | 
    
         
            +
              config_file = Rake.application.rakefile
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              unless config_file.to_s.empty?
         
     | 
| 
      
 47 
     | 
    
         
            +
                print_str "! You already have #{config_file}."
         
     | 
| 
      
 48 
     | 
    
         
            +
                exit 8
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              outfile = './config/deploy.rb'
         
     | 
| 
      
 52 
     | 
    
         
            +
              require 'fileutils'
         
     | 
| 
      
 53 
     | 
    
         
            +
              FileUtils.mkdir_p './config'
         
     | 
| 
      
 54 
     | 
    
         
            +
              FileUtils.cp Mina.root_path('data/deploy.rb'), outfile
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              print_str "-----> Created #{outfile}"
         
     | 
| 
      
 57 
     | 
    
         
            +
              print_str "Edit this file, then run `#{name} setup` after."
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            task :default => :help
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            module HelpHelpers
         
     | 
| 
      
 63 
     | 
    
         
            +
              def get_tasks(&blk)
         
     | 
| 
      
 64 
     | 
    
         
            +
                Rake.application.tasks.select &blk
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              def print_tasks(tasks, width=nil)
         
     | 
| 
      
 68 
     | 
    
         
            +
                name = Rake.application.name
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                width ||= tasks.map { |t| t.name_with_args.length }.max || 10
         
     | 
| 
      
 71 
     | 
    
         
            +
                tasks.each do |t|
         
     | 
| 
      
 72 
     | 
    
         
            +
                  if t.comment
         
     | 
| 
      
 73 
     | 
    
         
            +
                    puts "  #{name} %-#{width}s   # %s" % [ t.name_with_args, t.comment ]
         
     | 
| 
      
 74 
     | 
    
         
            +
                  else
         
     | 
| 
      
 75 
     | 
    
         
            +
                    puts "  #{name} %s" % [ t.name_with_args ]
         
     | 
| 
      
 76 
     | 
    
         
            +
                  end
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              SYSTEM_TASKS = %w[help tasks init]
         
     | 
| 
      
 81 
     | 
    
         
            +
              def system_tasks() get_tasks { |t| SYSTEM_TASKS.include? t.name }; end
         
     | 
| 
      
 82 
     | 
    
         
            +
              def top_tasks()    get_tasks { |t| ! t.name.include?(':') && t.comment && !system_tasks.include?(t) }; end
         
     | 
| 
      
 83 
     | 
    
         
            +
              def sub_tasks()    get_tasks { |t| t.name.include?(':') }; end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
              def show_task_help(options={})
         
     | 
| 
      
 86 
     | 
    
         
            +
                puts "Basic usage:"
         
     | 
| 
      
 87 
     | 
    
         
            +
                print_tasks system_tasks
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                if top_tasks.any?
         
     | 
| 
      
 90 
     | 
    
         
            +
                  puts "\nServer tasks:"
         
     | 
| 
      
 91 
     | 
    
         
            +
                  print_tasks top_tasks
         
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                if sub_tasks.any? && options[:full]
         
     | 
| 
      
 95 
     | 
    
         
            +
                  puts "\nMore tasks:"
         
     | 
| 
      
 96 
     | 
    
         
            +
                  print_tasks sub_tasks
         
     | 
| 
      
 97 
     | 
    
         
            +
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
              end
         
     | 
| 
      
 99 
     | 
    
         
            +
            end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            extend HelpHelpers
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            # ### help
         
     | 
| 
      
 104 
     | 
    
         
            +
            # Shows the help screen.
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            desc "Show help."
         
     | 
| 
      
 107 
     | 
    
         
            +
            task :help do
         
     | 
| 
      
 108 
     | 
    
         
            +
              name = Rake.application.name
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              puts "#{name} - Really fast server deployment and automation tool\n\n"
         
     | 
| 
      
 111 
     | 
    
         
            +
              puts "Options:"
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
              opts = [
         
     | 
| 
      
 114 
     | 
    
         
            +
                [ "-h, --help", "Show help" ],
         
     | 
| 
      
 115 
     | 
    
         
            +
                [ "-V, --version", "Show program version" ],
         
     | 
| 
      
 116 
     | 
    
         
            +
                [ "-v, --verbose", "Show commands as they happen" ],
         
     | 
| 
      
 117 
     | 
    
         
            +
                [ "-S, --simulate", "Run in simulation mode" ],
         
     | 
| 
      
 118 
     | 
    
         
            +
                [ "-t, --trace", "Show backtraces when errors occur" ],
         
     | 
| 
      
 119 
     | 
    
         
            +
                [ "-f FILE", "Use FILE as the deploy configuration" ]
         
     | 
| 
      
 120 
     | 
    
         
            +
              ]
         
     | 
| 
      
 121 
     | 
    
         
            +
              opts.each { |args| puts "  %-17s %s" % args }
         
     | 
| 
      
 122 
     | 
    
         
            +
              puts ""
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
              show_task_help
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
              unless Rake.application.have_rakefile
         
     | 
| 
      
 127 
     | 
    
         
            +
                puts ""
         
     | 
| 
      
 128 
     | 
    
         
            +
                puts "Run this command in a project with a 'config/deploy.rb' file to see more options."
         
     | 
| 
      
 129 
     | 
    
         
            +
              end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
              puts ""
         
     | 
| 
      
 132 
     | 
    
         
            +
              puts "All of Rake's options are also available as '#{name}' options. See 'rake --help'"
         
     | 
| 
      
 133 
     | 
    
         
            +
              puts "for more information."
         
     | 
| 
      
 134 
     | 
    
         
            +
              exit
         
     | 
| 
      
 135 
     | 
    
         
            +
            end
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            # ### tasks
         
     | 
| 
      
 138 
     | 
    
         
            +
            # Display all tasks in a nice table.
         
     | 
| 
      
 139 
     | 
    
         
            +
            #
         
     | 
| 
      
 140 
     | 
    
         
            +
            #     $ mina tasks
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
            desc "Show all tasks."
         
     | 
| 
      
 143 
     | 
    
         
            +
            task :tasks do
         
     | 
| 
      
 144 
     | 
    
         
            +
              show_task_help :full => true
         
     | 
| 
      
 145 
     | 
    
         
            +
            end
         
     |