Module: ConfigMan::Parsers::YAML

Defined in:
lib/configman/parsers/yaml.rb

Constant Summary collapse

CONFIG_FILE_PATH =
File.join(Dir.pwd, '.config').freeze

Class Method Summary collapse

Class Method Details

.parse(file_path) ⇒ Object

Parse the .config file and return a hash of the configuration values

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
19
20
# File 'lib/configman/parsers/yaml.rb', line 12

def self.parse(file_path)
  raise ArgumentError, "File not found: #{file_path}" unless File.exist?(file_path)

  parsed_config = ::YAML.load_file(file_path)

  raise ArgumentError, "Invalid YAML format in #{file_path}" unless parsed_config.is_a?(Hash)

  parsed_config
end

.update(key, new_value) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/configman/parsers/yaml.rb', line 22

def self.update(key, new_value)
  existing_config = parse(CONFIG_FILE_PATH)
  existing_config[key] = new_value

  File.open(CONFIG_FILE_PATH, 'w') do |file|
    file.write(existing_config.to_yaml)
  end
end

.write(config_hash) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/configman/parsers/yaml.rb', line 31

def self.write(config_hash)
  # Access the loaded modules and expected keys from the main class
  loaded_modules = ConfigMan.used_modules
  expected_keys = ConfigMan.expected_keys

  # Use the utility method to sort the keys into their respective sections
  sorted_config = Utils.sort_into_sections(config_hash, expected_keys, loaded_modules)

  File.open(CONFIG_FILE_PATH, 'w') do |file|
    file.write(sorted_config.to_yaml)
  end
end