Sha256: 7b7e3c69e2febd7ea3c5e413c0925dca8dbe5a0ebbfaec6bc32392b6d139266b

Contents?: true

Size: 988 Bytes

Versions: 1

Compression:

Stored size: 988 Bytes

Contents

require "yaml"

module Credman
  class Configuration
    include Singleton

    attr_writer :settings_list

    def self.add_setting(name, default_value = nil)
      attr_accessor name
      instance.send("#{name}=", default_value)
      instance.settings_list = instance.settings_list.push(name.to_sym)
    end

    def self.reset
      load __FILE__
      self
    end

    def settings_list
      @settings_list ||= []
    end

    def setting_exists?(setting_name)
      settings_list.include?(setting_name)
    end

    def load_from_yml(config_path = "config/credman.yml")
      return unless File.exist?(config_path)

      settings = YAML.load_file(config_path)
      return unless settings

      settings.each do |setting_name, setting_value|
        send("#{setting_name}=", setting_value) if setting_exists?(setting_name.to_sym)
      end
    end

    add_setting :default_diff_branch, "main"
    add_setting :available_environments, %w[development test production]
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
credman-0.0.5 lib/credman/configuration.rb