Sha256: 6d9c2ee0bf1932803cd06f0518e5f2dfb2e48f8cef23f737948cc01acdb8c6d3

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

require 'article_fixture_gen/cli/config'

module ArticleFixtureGen
  module Exe
    # Build configuration, consolidating defaults, possible YAML config-file
    # contents, and possible command-line-specified settings.
    class Config
      def self.load(modified:, options:)
        new(options, modified).load
      end

      def load
        return config_based_on_file if config_given?
        ArticleFixtureGen::Config.new options
      end

      protected

      def initialize(options, modified)
        @options = options.to_hash
        @modified = modified.to_hash
        self
      end

      private

      attr_reader :modified, :options

      def config_given?
        options[:config_given] == true
      end

      def config_based_on_file
        effective_options = { defaults: options, filename: options[:config],
                              overrides: modified }
        ArticleFixtureGen::CLI::Config.call effective_options
      end
    end # class ArticleFixtureGen::Exe::Config
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
article_fixture_gen-0.1.2 lib/article_fixture_gen/exe/config.rb
article_fixture_gen-0.1.1 lib/article_fixture_gen/exe/config.rb