Sha256: 54ac5a166729cc0f3c02f501505e3bd0ab23e10840ac123723334dfbd064012d
Contents?: true
Size: 1.07 KB
Versions: 4
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true require "pathname" require "yaml" require "refinements/hashes" module Runcom # Default gem configuration with support for custom settings. class Configuration using Refinements::Hashes attr_reader :path def initialize project_name:, file_name: "configuration.yml", defaults: {} @path = load_path project_name, file_name @defaults = defaults @settings = defaults.deep_merge process_settings end def merge custom_settings settings.deep_merge custom_settings end def to_h settings end private attr_reader :paths, :defaults, :settings def load_path project, file paths = XDG::Configuration.computed_dirs.map { |root| Pathname "#{root}/#{project}/#{file}" } paths.find(&:exist?) end def load_settings yaml = YAML.load_file path yaml.is_a?(Hash) ? yaml : {} end def process_settings load_settings rescue Psych::SyntaxError => error raise Errors::Syntax, error.message rescue StandardError defaults end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
runcom-2.0.1 | lib/runcom/configuration.rb |
runcom-2.0.0 | lib/runcom/configuration.rb |
runcom-1.4.1 | lib/runcom/configuration.rb |
runcom-1.4.0 | lib/runcom/configuration.rb |