class CodeQuality::CLI::Application

doc: www.rubydoc.info/gems/rake/Rake/Application

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/code_quality/cli.rb, line 11
def initialize
  super
  @name = "code_quality"
end

Public Instance Methods

__version() click to toggle source

allow option “–version”

# File lib/code_quality/cli.rb, line 74
def __version
  ["--version", "-V",
   "Display the program version.",
   lambda do |_value|
     puts "CodeQuality #{CodeQuality::VERSION}"
     exit
   end]
end
find_rakefile_location() click to toggle source

allows running `code_quality` without a Rakefile

Calls superclass method
# File lib/code_quality/cli.rb, line 84
def find_rakefile_location
  if (location = super).nil?
    [rakefile_path, Dir.pwd]
  else
    location
  end
end
handle_options() click to toggle source

allow option “–help”

# File lib/code_quality/cli.rb, line 36
def handle_options
  options.rakelib = ["rakelib"]
  options.trace_output = $stderr

  OptionParser.new do |opts|
    opts.separator "Run code_quality for a ruby/rails project, e.g.:"
    opts.separator "    code_quality lowest_score=90 rubocop_max_offenses=100 metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=10 roodi_max_offenses=10"
    opts.separator ""
    opts.separator "Show available tasks:"
    opts.separator "    code_quality -T"
    opts.separator ""
    opts.separator "Invoke an audit task:"
    opts.separator "    code_quality AUDIT_TASK"
    opts.separator ""
    opts.separator "Invoke all security audit tasks:"
    opts.separator "    code_quality security_audit"
    opts.separator ""
    opts.separator "Invoke all quality audit tasks:"
    opts.separator "    code_quality quality_audit"
    opts.separator ""
    opts.separator "Advanced options:"

    opts.on_tail("-h", "--help", "-H", "Display this help message.") do
      puts opts
      exit
    end

    standard_rake_options.each { |args| opts.on(*args) }
    opts.environment("RAKEOPT")
  end.parse!
end
in_namespace(name) { || ... } click to toggle source
Calls superclass method
# File lib/code_quality/cli.rb, line 27
def in_namespace(name)
  if name == @name # remove root namespace
    yield
  else
    super
  end
end
lib_dir() click to toggle source
# File lib/code_quality/cli.rb, line 92
def lib_dir
  File.expand_path("../../../lib", __FILE__)
end
rakefile_path() click to toggle source
# File lib/code_quality/cli.rb, line 96
def rakefile_path
  File.join(lib_dir, "code_quality.rb")
end
run() click to toggle source
# File lib/code_quality/cli.rb, line 16
def run
  Rake.application = self
  @rakefiles = []
  add_import File.join(lib_dir, "tasks", "code_quality.rake")
  standard_exception_handling do
    init name
    load_rakefile
    top_level
  end
end
sort_options(options) click to toggle source

overwrite options

Calls superclass method
# File lib/code_quality/cli.rb, line 69
def sort_options(options)
  super.push(__version)
end