Sha256: 739e32076295ad933d1c99961c88b37e7d7f7e3d164edec5f438e9309e4a65ee

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

require 'pdk'
require 'pdk/cli/exec'

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

      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

      def self.parse_options(_options, targets)
        targets
      end

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

      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
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pdk-0.2.0 lib/pdk/validators/base_validator.rb