Sha256: 0a82b401d96069cdfb503e6b6d57d21d5569b8b428f31222b089d98a4b44ae10

Contents?: true

Size: 1.59 KB

Versions: 13

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

# Allow an existing fact file to be provided, to avoid pulling facts from PuppetDB.
# @param parser [OptionParser object] The OptionParser argument
# @param options [Hash] Options hash being constructed; this is modified in this method.
OctocatalogDiff::Cli::Options::Option.newoption(:fact_file) do
  has_weight 150

  def parse(parser, options)
    OctocatalogDiff::Cli::Options.option_globally_or_per_branch(
      parser: parser,
      options: options,
      cli_name: 'fact-file',
      option_name: 'facts',
      desc: 'Override fact',
      datatype: '',
      validator: ->(fact_file) { File.file?(fact_file) && (fact_file =~ /\.ya?ml$/ || fact_file =~ /\.json$/) },
      translator: lambda do |fact_file|
        local_opts = { fact_file_string: File.read(fact_file) }
        if fact_file =~ /\.ya?ml$/
          OctocatalogDiff::Facts.new(local_opts.merge(backend: :yaml))
        elsif fact_file =~ /\.json$/
          OctocatalogDiff::Facts.new(local_opts.merge(backend: :json))
        else
          # :nocov:
          # Believed to be a bug condition since the validator should kick this out before it ever gets here.
          raise ArgumentError, 'I do not know how to parse the provided fact file. Needs .yaml or .json extension.'
          # :nocov:
        end
      end,
      post_process: lambda do |opts|
        unless options[:node]
          %w[to_facts from_facts facts].each do |opt|
            next unless opts[opt.to_sym] && opts[opt.to_sym].node
            opts[:node] = opts[opt.to_sym].node
            break
          end
        end
      end
    )
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
octocatalog-diff-2.3.1 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-2.3.0 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-2.1.0 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-2.0.0 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.6.0 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.5.4 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.5.3 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.5.2 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.5.1 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.5.0 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.4.1 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.4.0 lib/octocatalog-diff/cli/options/fact_file.rb
octocatalog-diff-1.3.0 lib/octocatalog-diff/cli/options/fact_file.rb