Class: Checker::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/checker/cli.rb

Class Method Summary collapse

Class Method Details

.executeObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/checker/cli.rb', line 6

def execute
  directory_to_check = nil

  if ARGV.size == 0
    modules = get_modules_to_check
  else
    if ARGV[0] == "install"
      Checker::Installator.install!
    elsif ARGV[0] == "reinstall"
      Checker::Installator.reinstall!
    elsif ARGV[0] == "help"
      Checker::Helper.show_help!
    elsif ARGV[0] == "modules"
      Checker::Helper.show_modules!(self.available_modules)
    elsif File.exist?(ARGV[0]) && File.directory?(ARGV[0])
      directory_to_check = ARGV[0].gsub /\/+$/, ''
      modules = 'all'
    else
      modules = ARGV.map(&:downcase)
    end
  end

  if modules.empty? || modules.include?('all')
    modules = available_modules
  end

  check_module_availability(modules) do |result|
    puts "Modules not available: #{result.join(", ")}.\n"
    puts "Available: all, #{available_modules.join(", ")}\n"
    puts "Check your git config checker.check\n"
    exit 1
  end

  module_instances = []
  if !directory_to_check.nil?
    files = Dir["#{directory_to_check}/**/*"]
  else
    files = modified_files
  end
  modules.each do |mod|
    klass = "Checker::Modules::#{mod.classify}".constantize
    module_instances << klass.new(files.dup)
  end

  files_checked = module_instances.map(&:files_to_check).flatten.uniq
  puts "[ CHECKER #{Checker::VERSION} - #{files_checked.size} files ]".light_blue

  results = module_instances.map(&:check)
  show_full_status module_instances
  exit (results.all_true? ? 0 : 1)
end