class CodeWeb::CLI

Attributes

arguments[RW]

@attribute arguments [r]

@return [Array<String>] command line arguments
base_url[RW]

@attribute base_url [rw]

@return url for files (i.e.: https://github.com/ManageIQ/manageiq/blob/master)
defaults to local filesystem
class_map[RW]

@attribute class_map

@return [Map<Regexp,html_class>] files/directories with specal emphasis
code_parser[RW]
file_and_url[RW]

@attribute file_and_url [rw]

@return true if both url and file are displayed
filenames[RW]

@attribute filenames [rw]

@return [Array<String>] regular expression filenames
output[RW]
report_generator[RW]

@attribute report_generator [rw]

@return class that runs the report (i.e.: TextReport, HtmlReport)

Public Class Methods

new(arguments) click to toggle source
# File lib/code_web/cli.rb, line 46
def initialize(arguments)
  @arguments = arguments
  @code_parser = CodeWeb::CodeParser.new
  @class_map = {}
end
parse(args) click to toggle source
# File lib/code_web/cli.rb, line 5
def self.parse(args)
  new(args).run
end

Public Instance Methods

arg_regex() click to toggle source
# File lib/code_web/cli.rb, line 12
def arg_regex ; code_parser.arg_regex ; end
arg_regex=(val) click to toggle source
# File lib/code_web/cli.rb, line 14
def arg_regex=(val) ; code_parser.arg_regex = val ; end
debug=(val) click to toggle source
# File lib/code_web/cli.rb, line 17
def debug=(val) ; code_parser.debug = val ; end
debug?() click to toggle source
# File lib/code_web/cli.rb, line 18
def debug? ; code_parser.debug? ; end
display_results() click to toggle source
# File lib/code_web/cli.rb, line 106
def display_results
  STDOUT.puts "parsed #{files_parsed} files"
  report_generator.new(method_calls, class_map, arg_regex, output, :base_url => base_url).report
end
exit_on_error=(val) click to toggle source
# File lib/code_web/cli.rb, line 15
def exit_on_error=(val) ; code_parser.exit_on_error = val ; end
files_parsed() click to toggle source
# File lib/code_web/cli.rb, line 11
def files_parsed ; code_parser.file_count ; end
method_calls() click to toggle source
# File lib/code_web/cli.rb, line 10
def method_calls ; code_parser.method_calls ; end
method_regex=(val) click to toggle source
# File lib/code_web/cli.rb, line 13
def method_regex=(val) ; code_parser.method_regex = val ; end
parse_arguments() click to toggle source
# File lib/code_web/cli.rb, line 58
    def parse_arguments
      #defaults
      self.report_generator = ::CodeWeb::HtmlReport
      self.output = STDOUT

      #parsing the command line
      OptionParser.new do |opt|
        opt.banner = "Usage: code_web regex [file_name ...]"
#       opt.on('-n', '--requests=count',   Integer, "Number of requests (default: #{requests})")  { |v| options[:requests] = v }
        opt.on('-t', '--text',                      'Use text reports')                           { |v| self.report_generator = ::CodeWeb::TextReport }
        opt.on('-u', '--url URL',                   'Base url (e.g.: https://github.com/miq/miq/blob/master)') { |v| self.base_url = v }
        opt.on('-b', '--both',                      'Show file and url references')               { |v| self.file_and_url = v }
        opt.on('-a', '--arg ARG_REGEX',             'Only files with hash argument')              { |v| self.arg_regex = Regexp.new(v) }
        opt.on('-o', '--output FILENAME',           'Output filename')                            { |v| self.output = (v == '-') ? STDOUT : File.new(v,'w') }
        opt.on('-e', '--error-out',                 'exit on unknown tags')                       { |v| self.exit_on_error = true}
        opt.on('-V', '--verbose',                   'verbose parsing')                            { |v| self.verbose = true}
        opt.on('-D', '--debug',                     'debug parsing')                              { |v| self.debug = true}
        opt.on('-p', '--pattern FILENAME_REGEX=COLOR','color to emphasize a file')                { |v| v = v.split('=') ; self.class_map[Regexp.new(v.first)] = v.last }
        opt.on('--byebug') { require "byebug" }
        opt.on('--pry') { require "pry" }
        opt.on_tail("-h", "--help", "Show this message")                                          { puts opt ; exit }
        opt.on_tail("-v", "--version", "Show version_information")                                { puts "Code Web version #{CodeWeb::VERSION}" ; exit }
        opt.parse!(arguments)

        if arguments.length == 0
          puts opt
          exit
        end
      end
      self.method_regex = Regexp.new(arguments[0])
      self.filenames = arguments[1..-1] || "."
    end
parse_files() click to toggle source
# File lib/code_web/cli.rb, line 91
def parse_files
  filenames.each do |arg|
    arg = "#{arg}/**/*.rb" if Dir.exists?(arg)
    if File.exist?(arg)
      puts arg if debug?
      code_parser.parse arg
    else
      Dir[arg].each do |file_name|
        puts arg if debug?
        code_parser.parse(file_name)
      end
    end
  end
end
run() click to toggle source
# File lib/code_web/cli.rb, line 52
def run
  parse_arguments
  parse_files
  display_results
end
verbose=(val) click to toggle source
# File lib/code_web/cli.rb, line 16
def verbose=(val) ; code_parser.verbose = val ; end