class LogView::OptParser

Public Class Methods

new() click to toggle source
# File lib/log_view/option_parser.rb, line 5
def initialize
  @options = OpenStruct.new
  apply_defaults
end

Public Instance Methods

parse(args, config) click to toggle source
# File lib/log_view/option_parser.rb, line 10
def parse args, config
  opt_parser = new_opt_parser @options
  opt_parser.parse!(args)
  generate_config config
end

Private Instance Methods

apply_defaults() click to toggle source
# File lib/log_view/option_parser.rb, line 17
def apply_defaults
  @options.grep = false
  @options.split_log = false
  @options.if_files = false
  @options.if_server = false
  @options.if_help = false
  @options.if_grepv = false
  @options.if_n = false
end
create_files(config) click to toggle source
# File lib/log_view/option_parser.rb, line 116
def create_files config
  return unless config.options.if_files

  config.files = config.files.select {|file| file.include?(config.options.files.to_s)}
  puts paint_red("\tWarning -- no files with #{config.options.files.to_s}") if config.files.empty?
end
create_grep(config) click to toggle source
# File lib/log_view/option_parser.rb, line 112
def create_grep config
  config.grep_string << " | grep --color=always '#{config.options.grep_string}'" if config.options.grep
end
create_grepv(config) click to toggle source
# File lib/log_view/option_parser.rb, line 108
def create_grepv config
  config.grep_string << " | grep -v '#{config.options.grep_v_string}'" if config.options.grep_v
end
create_n_lines(config) click to toggle source
# File lib/log_view/option_parser.rb, line 103
def create_n_lines config
  config.grep_string = ""
  config.grep_string << " -n #{config.options.line_numbers}" if config.options.if_n
end
create_servers(config) click to toggle source
# File lib/log_view/option_parser.rb, line 123
def create_servers config
  return unless config.options.if_server

  config.servers = config.servers.select {|server| server.include?(config.options.server.to_s)}
  puts paint_red("\tWarning -- no servers with #{config.options.server.to_s}") if config.servers.empty?
end
generate_config(config) click to toggle source
# File lib/log_view/option_parser.rb, line 64
def generate_config config
  config.tap do |conf|
    conf.options = @options
    create_n_lines conf
    create_grep conf
    create_grepv conf
    create_files conf
    create_servers conf
    puts_help conf if conf.options.if_help == true
  end
end
new_opt_parser(options) click to toggle source
# File lib/log_view/option_parser.rb, line 27
def new_opt_parser options
  OptionParser.new do |opts|
    opts.on("--grep","--grep string", String) {|grep|
      options.grep = true
      options.grep_string = grep
    }
    opts.on("--grep-v", "--grep-v string", String){ |grep|
      options.grep_v = true
      options.grep_v_string = grep
    }

    opts.on("--split-log") {
      options.split_log = true
    }

    opts.on("-f","--file string", String) {|file|
      options.if_files = true
      options.files = file
    }

    opts.on("-s", "--server string", String) {|server|
      options.if_server = true
      options.server = server
    }
    opts.on("--help"){
      options.if_help = true
    }
    opts.on("-h"){
      options.if_help = true 
    }
    opts.on("-n","--n string", String){ |line_number|
      options.if_n = true
      options.line_numbers = line_number
    }
  end
end
puts_help() click to toggle source
# File lib/log_view/option_parser.rb, line 76
def puts_help
  array = []
  array << "LogView version #{VERSION}"
  array << "Configuration file at: #{paint_green(Config.config_file_path)}"
  array << "Projects:"
  projects = @config.projects || []
  if projects.empty?
    array << "  No projects configured, please take a look at the configuration file"
  else
    projects.each do |project|
      array << "  - #{project}"
    end
  end
  array << "\nHelp:"
  array << "  $ log_view <project_name>"
  array << "\n"
  array << "  $ log_view <project_name>  --grep <string-name>"
  array << "\n"
  array << "  $ log_view <project_name>  --split-log"
  array << "\n"
  array << "  $ log_view <project_name>  -s <server-name>"
  array << "\n"
  array << "  $ log_view <project_name>  -f <file-name>"
  array << "\n"
  array.join("\n")
end