Sha256: a3c14f5271c7af5de1e4e2f95f8952460302a84a5c800cec3e8a09f807ba003b

Contents?: true

Size: 1.82 KB

Versions: 2

Compression:

Stored size: 1.82 KB

Contents

require 'pdk'

module PDK
  module CLI
    module Util
      class OptionNormalizer
        def self.comma_separated_list_to_array(list, _options = {})
          raise 'Error: expected comma separated list' unless OptionValidator.comma_separated_list?(list)
          list.split(',').compact
        end

        # Parse one or more format:target pairs into report format
        # specifications.
        #
        # Each specification is a Hash with two values:
        #   :method => The name of the method to call on the PDK::Report object
        #              to render the report.
        #   :target => The target to write the report to. This can be either an
        #              IO object that implements #write, or a String filename
        #              that will be opened for writing.
        #
        # If the target given is "stdout" or "stderr", this will convert those
        # strings into the appropriate IO object.
        #
        # @return [Array<Hash{Symbol=>Object}>] An array of one or more report
        #   format specifications
        def self.report_formats(formats)
          formats.map do |f|
            format, target = f.split(':', 2)

            begin
              OptionValidator.enum(format, PDK::Report.formats)
            rescue ArgumentError
              raise PDK::CLI::ExitWithError, "'%{name}' is not a valid report format (%{valid})" % {
                name:  format,
                valid: PDK::Report.formats.join(', '),
              }
            end

            case target
            when 'stdout'
              target = $stdout
            when 'stderr'
              target = $stderr
            when nil
              target = PDK::Report.default_target
            end

            { method: "write_#{format}".to_sym, target: target }
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pdk-2.7.1 lib/pdk/cli/util/option_normalizer.rb
pdk-2.7.0 lib/pdk/cli/util/option_normalizer.rb