class Trinidad::CommandLineParser

Constants

DEFAULT_CONFIG_FILE

Attributes

config_file[W]
default_options[R]

Public Class Methods

load(options = {}) click to toggle source
# File lib/trinidad/command_line_parser.rb, line 8
def self.load(options = {})
  CommandLineParser.new.load!(options)
end
new() click to toggle source
# File lib/trinidad/command_line_parser.rb, line 14
def initialize
  @default_options = {}
end
parse(argv) click to toggle source
# File lib/trinidad/command_line_parser.rb, line 4
def self.parse(argv)
  CommandLineParser.new.parse!(argv)
end

Public Instance Methods

config_file(base_dir = nil) click to toggle source
# File lib/trinidad/command_line_parser.rb, line 50
def config_file(base_dir = nil)
  base_dir ||= Dir.pwd
  if @config_file.nil? # false means do not use no config file
    Dir.glob(File.join(base_dir, DEFAULT_CONFIG_FILE)).first
  else
    @config_file && File.expand_path(@config_file, base_dir)
  end
end
load!(options) click to toggle source

Load the configuration from the given options and return it.

# File lib/trinidad/command_line_parser.rb, line 31
def load!(options)
  config = config_file(options[:root_dir] || options[:web_app_dir])
  if config && File.exist?(config)
    if yaml = (File.extname(config) == '.yml')
      require 'yaml'; require 'erb'
      config_options = YAML.load(ERB.new(File.read(config)).result(binding))
    end
    # NOTE: provided options should override configuration values :
    Trinidad.configure(config_options, options) do
      load config unless yaml # if not .yml assume it's ruby (.rb)
    end
  else
    Trinidad.configure(options)
  end
end
Also aliased as: load_configuration
load_configuration(options)
Alias for: load!
options_parser() click to toggle source
# File lib/trinidad/command_line_parser.rb, line 61
def options_parser
  require 'optparse'
  @parser ||= OptionParser.new do |opts|
    opts.banner = 'Usage: trinidad [server options]'
    opts.separator ''

    opts.on('-d', '--dir ROOT_DIR', 'web application root directory',
      "default: current working directory") do |dir|
      default_options[:root_dir] = dir
    end

    opts.on('-e', '--env ENVIRONMENT', 'rack (rails) environment',
      "default: #{default(:environment)}") do |env|
      default_options[:environment] = env
    end

    opts.on('-r', '--rackup [RACKUP_FILE]', 'rackup configuration file',
      "default: config.ru") do |rackup|
      default_options[:rackup] = rackup || 'config.ru'
    end

    opts.on('--public', '--public PUBLIC_DIR', 'web application public root',
      "default: #{default(:public)}") do |public|
      default_options[:public] = public
    end

    opts.on('-c', '--context CONTEXT_PATH', 'application context path',
      "default: #{default(:context_path)}") do |path|
      default_options[:context_path] = path
    end

    opts.on('--monitor', '--monitor MONITOR_FILE', 'monitor for application re-deploys',
      "default: tmp/restart.txt") do |monitor|
      default_options[:monitor] = monitor
    end

    opts.on('-t', '--threadsafe', 'force thread-safe mode (use single runtime)') do
      default_options[:jruby_min_runtimes] = 1
      default_options[:jruby_max_runtimes] = 1
    end

    opts.on('--runtimes MIN:MAX', 'use given number of min/max jruby runtimes',
      "default: #{default(:jruby_min_runtimes)}:#{default(:jruby_max_runtimes)}") do
      |min_max| min, max = min_max.split(':')
      default_options[:jruby_min_runtimes] = min.to_i if min
      default_options[:jruby_max_runtimes] = max.to_i if max
    end

    opts.on('-f', '--config [CONFIG_FILE]', 'configuration file',
      "default: #{DEFAULT_CONFIG_FILE}") do |file|
      self.config_file = file
    end

    opts.on('--address', '--address ADDRESS', 'host address',
      "default: #{default(:address)}") do |address|
      default_options[:address] = address
    end

    opts.on('-p', '--port PORT', 'port to bind to',
      "default: #{default(:port)}") do |port|
      default_options[:port] = port
    end

    opts.on('-s', '--ssl [SSL_PORT]', 'enable secure socket layout',
      "default port: 3443") do |port|
      default_options[:ssl] = { :port => (port || 3443).to_i }
    end

    opts.on('-a', '--ajp [AJP_PORT]', 'enable the AJP web protocol',
      "default port: 8009") do |port|
      default_options[:ajp] = { :port => (port || 8009).to_i }
    end

    opts.on('--java_lib LIB_DIR', '--lib LIB_DIR (deprecated use --java_lib)',
      'contains .jar files used by the app',
      "default: #{default(:java_lib)}") do |lib|
      default_options[:java_lib] = lib
    end

    opts.on('--java_classes CLASSES_DIR', '--classes CLASSES_DIR (deprecated use --java_classes)',
      'contains java classes used by the app',
      "default: #{default_java_classes}") do |classes|
      default_options[:java_classes] = classes
    end

    opts.on('-l', '--load EXTENSION_NAMES', Array, 'load options for extensions') do |ext_names|
      ext_names.each do |ext|
        Trinidad::Extensions.configure_options_extensions({ ext => {} }, opts, default_options)
      end
    end

    opts.on('--apps_base APPS_BASE_DIR', '--apps APPS_BASE_DIR (deprecated use --apps_base)',
      'set applications base directory') do |apps_base|
      default_options[:apps_base] = apps_base
    end

    opts.on('-g', '--log LEVEL', 'set logging level') do |log|
      default_options[:log] = log
    end

    opts.on('-v', '--version', 'show server version') do
      puts "Trinidad #{Trinidad::VERSION} (Tomcat #{Trinidad::TOMCAT_VERSION})"
      exit
    end

    opts.on('-h', '--help', 'display this help') do
      puts opts
      exit
    end
  end
end
parse!(argv) click to toggle source

Parse the arguments and return the loaded Trinidad configuration.

# File lib/trinidad/command_line_parser.rb, line 19
def parse!(argv)
  begin
    options_parser.parse!(argv)
  rescue OptionParser::InvalidOption => e
    p e, options_parser
    exit(1)
  end

  load!(default_options)
end

Private Instance Methods

default(key) click to toggle source
# File lib/trinidad/command_line_parser.rb, line 175
def default(key)
  default_options[key] || Configuration::DEFAULTS[key]
end
default_java_classes() click to toggle source
# File lib/trinidad/command_line_parser.rb, line 179
def default_java_classes
  default(:java_classes) ||
    ( default(:java_lib) && File.join(default(:java_lib), 'classes') )
end