Class: PDK::Validate::BaseValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/pdk/validators/base_validator.rb

Class Method Summary collapse

Class Method Details

.cmd_pathObject



7
8
9
# File 'lib/pdk/validators/base_validator.rb', line 7

def self.cmd_path
  File.join(PDK::Util.module_root, 'bin', cmd)
end

.invoke(report, options = {}) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/pdk/validators/base_validator.rb', line 42

def self.invoke(report, options = {})
  PDK::Util::Bundler.ensure_binstubs!(cmd)

  targets = parse_targets(options)
  cmd_argv = parse_options(options, targets).unshift(cmd_path)
  cmd_argv.unshift('ruby') if Gem.win_platform?

  PDK.logger.debug(_('Running %{cmd}') % { cmd: cmd_argv.join(' ') })

  command = PDK::CLI::Exec::Command.new(*cmd_argv).tap do |c|
    c.context = :module
    c.add_spinner(spinner_text)
  end

  result = command.execute!

  begin
    json_data = JSON.parse(result[:stdout])
  rescue JSON::ParserError
    json_data = []
  end

  parse_output(report, json_data)

  result[:exit_code]
end

.parse_options(_options, targets) ⇒ Object



34
35
36
# File 'lib/pdk/validators/base_validator.rb', line 34

def self.parse_options(_options, targets)
  targets
end

.parse_targets(options) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/pdk/validators/base_validator.rb', line 11

def self.parse_targets(options)
  # If no targets are specified, then we will run validations from the
  # base module directory.
  targets = if options[:targets].nil? || options[:targets].empty?
              [PDK::Util.module_root]
            else
              options[:targets]
            end

  targets.map { |target|
    if respond_to?(:pattern)
      if File.directory?(target)
        files_glob = Array[pattern].flatten.map { |p| Dir.glob(File.join(target, p)) }
        files_glob.flatten.empty? ? target : files_glob
      else
        target
      end
    else
      target
    end
  }.flatten
end

.spinner_textObject



38
39
40
# File 'lib/pdk/validators/base_validator.rb', line 38

def self.spinner_text
  _('Invoking %{cmd}') % { cmd: cmd }
end