module Rbdock::Command::Options

Public Class Methods

check_version_avaiable(argv) click to toggle source
# File lib/rbdock/command/options.rb, line 94
def self.check_version_avaiable argv
  argv.each do |v|
    if not Rbdock::Generate.ruby_versions.include? v
      raise ArgumentError, "Definition not found: #{v} \n\nYou can list all available ruby versions with `rbdock --list'."            
    end
  end
end
create_command_parser(options) click to toggle source
# File lib/rbdock/command/options.rb, line 33
def self.create_command_parser options
  OptionParser.new do |opt|
    show_version opt
    show_help opt

    opt.on('-i name','--image=name', 'Set image name (ubuntu|centos)') { |i|
      options[:image] = i
    }

    opt.on('-a path','--app=path', 'Add Rails/Sinatra app') { |path|
      options[:app] = path
    }
    
    opt.on('-o filename', '--ouput=filename', 'Set output Dockerfile name') { |f|
      options[:output_filename] = f

    }

    opt.on('-f','--force', 'Attempt to overwrite Dockerfile without prompting for confirmation') {|b|
      options[:force_write_mode] = b
    }
    
    opt.on('--rbenv', desc='Use rbenv for ruby version manager') {
      options[:use_rbenv] = true
    }
    
    opt.on('--rvm', desc='Use rvm for ruby version manager') {
      options[:use_rvm] = true
    }

    opt.on('-l','--list', 'List all available ruby versions') {
      list_ruby_versions
    }
    
    opt.on('--debug', desc='Run as debug mode')
  end
end
list_ruby_versions() click to toggle source
# File lib/rbdock/command/options.rb, line 102
def self.list_ruby_versions
  STDERR.print "Available versions:\n   "
  STDERR.print Rbdock::Generate.ruby_versions.join("\n   ")
  STDERR.puts
  exit
end
parse!(argv) click to toggle source
# File lib/rbdock/command/options.rb, line 7
def self.parse!(argv)

  # Setup logger
  @logger = Log4r::Logger.new("rbdock::command::options")

  # Restore option and its value
  options = {}

  set_default_value options
  command_parser = create_command_parser options
  
  begin
    command_parser.parse!(argv)          
    ruby_version_perser options, argv
  rescue OptionParser::MissingArgument, OptionParser::InvalidOption, ArgumentError => e
    abort e.message
  end
  
  options
end
ruby_version_perser(options, argv) click to toggle source
# File lib/rbdock/command/options.rb, line 87
def self.ruby_version_perser options, argv
  raise ArgumentError, "#{options[:command]} ruby versions not found." if argv.empty?
  check_version_avaiable argv
  options[:ruby_versions] = argv
  options
end
set_default_value(options) click to toggle source
# File lib/rbdock/command/options.rb, line 28
def self.set_default_value options
  options[:image] = "ubuntu"
  options[:output_filename] = "Dockerfile"
end
show_help(opt) click to toggle source
# File lib/rbdock/command/options.rb, line 79
def self.show_help opt
  opt.banner   = "Usage: #{opt.program_name} <ruby-versions> [options]"
  opt.on_tail('-h','--help','Show this message') {
    STDERR.puts opt.help
    exit              
  }
end
show_version(opt) click to toggle source
# File lib/rbdock/command/options.rb, line 71
def self.show_version opt        
  opt.on_tail('-v','--version','Show version') {
    opt.version = Rbdock::VERSION
    STDERR.puts opt.ver
    exit              
  }        
end