class Tailstrom::OptionParser
Constants
- DEFAULTS
Public Class Methods
new()
click to toggle source
# File lib/tailstrom/option_parser.rb, line 12 def initialize @options = {} @options_from_file = {} end
Public Instance Methods
generate_parser()
click to toggle source
# File lib/tailstrom/option_parser.rb, line 27 def generate_parser ::OptionParser.new do |opt| opt.banner = <<-END tail -f access.log | #{$0} [OPTIONS] #{$0} [OPTIONS] [file] END opt.on('-c file', '--config file', String, 'config file') do |v| @options_from_file = load_config v end opt.on('-f num_or_string', '--value num_or_string', String, 'value field') do |v| @options[:value] = num_or_string v end opt.on('-k num_or_string', '--key num_or_string', String, 'key field') do |v| @options[:key] = num_or_string v end opt.on('-d delimiter', String, 'delimiter') do |v| @options[:delimiter] = v end opt.on('-i interval', Integer, 'interval for stat mode') do |v| @options[:interval] = v end opt.on('-e file_or_string', '--in-filter file_or_string', String, 'input filtering') do |v| @options[:in_filter] = file_or_string v end opt.on('--map file_or_string', String, 'input mapping') do |v| @options[:map] = file_or_string v end opt.on('--out-filter file_or_string', String, 'output filtering') do |v| @options[:out_filter] = file_or_string v end opt.on('--sort file_or_string', String, 'output sorting') do |v| @options[:sort] = file_or_string v end opt.on('--order desc|asc', String, 'sorting order (default=desc)') do |v| @options[:order] = v.to_s.downcase == 'asc' ? :asc : :desc end opt.on('--stat', 'statistics mode (default)') do @options[:mode] = :stat end opt.on('--print', 'print line mode') do @options[:mode] = :print end opt.on('--version', 'show version') do require 'tailstrom/version' puts Tailstrom::VERSION exit 0 end end end
parse(argv)
click to toggle source
# File lib/tailstrom/option_parser.rb, line 17 def parse(argv) parser = generate_parser parser.order! argv if infile = argv.shift @options[:static_infile] = open(infile, 'r') end @options = @options_from_file.merge @options DEFAULTS.merge @options end
Private Instance Methods
file_or_string(value)
click to toggle source
# File lib/tailstrom/option_parser.rb, line 78 def file_or_string(value) File.exist?(value) ? File.read(value) : value end
load_config(file)
click to toggle source
# File lib/tailstrom/option_parser.rb, line 86 def load_config(file) require 'yaml' argv = [] hash = YAML.load File.read(file) hash.each do |k, v| argv << (k.length > 1 ? "--#{k}" : "-#{k}") argv << v unless v.is_a? TrueClass end parser = Tailstrom::OptionParser.new parser.parse argv end
num_or_string(value)
click to toggle source
# File lib/tailstrom/option_parser.rb, line 82 def num_or_string(value) value =~ /^\d+$/ ? value.to_i : file_or_string(value) end