Sha256: f7766940a057808b27733e3e19df86761e9f2bc36c6c5a0a62178432c1aace9a

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module Capistrano
  module Releases
    # Command line interface class for Manager class.
    class CLI
      def run
        options = {}

        parser = OptionParser.new do |opts|
          opts.banner = 'Usage: manager [options]'

          opts.on('-bBUCKET', '--bucket=BUCKET',
                  'S3 bucket to pull/push releases.') do |v|
            options[:bucket] = v
          end

          opts.on('-dDEPLOY_TO', '--deploy-to=DEPLOY_TO',
                  'App directory to deploy to.') do |v|
            options[:deploy_to] = v
          end

          opts.on('-mMODE', '--mode=MODE',
                  "Mode to run: 'push' or 'pull'") do |v|
            options[:mode] = v
          end
        end

        parser.parse!

        unless options[:bucket]
          puts('-b or --bucket is a required option.') && exit(1)
        end

        unless options[:deploy_to]
          puts('-d or --deploy-to is a required option.') && exit(1)
        end

        puts('-m or --mode is a required option.') && exit(1) unless options[:mode]

        manager = ::Capistrano::Releases::Manager.new(options)

        case options[:mode]
        when 'push'
          manager.push
        when 'pull'
          manager.pull
        else
          puts 'Invalid mode.'
          exit(1)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capistrano-releases-0.1.0 lib/capistrano/releases/cli.rb