Sha256: 1493e0b417c14218a5567036aca2a7993ea0161d0e1ed1ce0dba7d63908c94c6

Contents?: true

Size: 918 Bytes

Versions: 7

Compression:

Stored size: 918 Bytes

Contents

# frozen_string_literal: true

require "pathname"
require "refinements/hashes"
require "refinements/structs"
require "runcom"
require "yaml"

module Milestoner
  module CLI
    module Configuration
      # Represents the fully assembled Command Line Interface (CLI) configuration.
      class Loader
        using Refinements::Hashes
        using Refinements::Structs

        DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
        HANDLER = Runcom::Config.new "#{Identity::NAME}/configuration.yml", defaults: DEFAULTS

        def self.call = new.call

        def self.with_defaults = new(handler: DEFAULTS)

        def initialize content: Content.new, handler: HANDLER
          @content = content
          @handler = handler
        end

        def call = content.merge(**handler.to_h.flatten_keys)

        private

        attr_reader :content, :handler
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
milestoner-12.2.0 lib/milestoner/cli/configuration/loader.rb
milestoner-12.1.0 lib/milestoner/cli/configuration/loader.rb
milestoner-12.0.4 lib/milestoner/cli/configuration/loader.rb
milestoner-12.0.3 lib/milestoner/cli/configuration/loader.rb
milestoner-12.0.2 lib/milestoner/cli/configuration/loader.rb
milestoner-12.0.1 lib/milestoner/cli/configuration/loader.rb
milestoner-12.0.0 lib/milestoner/cli/configuration/loader.rb