Class: GemContribute::Config
- Inherits:
-
Object
- Object
- GemContribute::Config
- Defined in:
- lib/gem_contribute/config.rb
Overview
Reads and writes ~/.config/gem-contribute/config.yml. Honors XDG_CONFIG_HOME so tests stay hermetic and unusual layouts work. Missing or corrupt files are treated as an empty config (no crash).
Constant Summary collapse
- KNOWN_KEYS =
%w[clone_root].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #clone_root ⇒ Object
-
#initialize(path: self.class.default_path) ⇒ Config
constructor
A new instance of Config.
- #set(key, value) ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(path: self.class.default_path) ⇒ Config
Returns a new instance of Config.
13 14 15 16 |
# File 'lib/gem_contribute/config.rb', line 13 def initialize(path: self.class.default_path) @path = path @data = load_file end |
Class Method Details
.default_path ⇒ Object
35 36 37 38 |
# File 'lib/gem_contribute/config.rb', line 35 def self.default_path base = ENV.fetch("XDG_CONFIG_HOME", File.("~/.config")) File.join(base, "gem-contribute", "config.yml") end |
Instance Method Details
#clone_root ⇒ Object
18 19 20 21 |
# File 'lib/gem_contribute/config.rb', line 18 def clone_root raw = @data["clone_root"] raw ? File.(raw) : nil end |
#set(key, value) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/gem_contribute/config.rb', line 23 def set(key, value) raise ArgumentError, "unknown config key #{key.inspect}. Known keys: #{KNOWN_KEYS.join(", ")}" \ unless KNOWN_KEYS.include?(key) @data[key] = value write_file end |
#to_h ⇒ Object
31 32 33 |
# File 'lib/gem_contribute/config.rb', line 31 def to_h @data.dup end |