Module: ConfigMan::Parsers::INI

Defined in:
lib/configman/parsers/ini.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
21
# File 'lib/configman/parsers/ini.rb', line 12

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

  ini = IniFile.load(file_path)
  parsed_config = ini.to_h

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

  parsed_config
end

.update(key, new_value) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/configman/parsers/ini.rb', line 23

def self.update(key, new_value)
  existing_config = parse(CONFIG_FILE_PATH)
  section, key = key.split('.', 2)
  existing_config[section] ||= {}
  existing_config[section][key] = new_value

  ini = IniFile.new(content: existing_config)
  ini.write(filename: CONFIG_FILE_PATH)
end

.write(config_hash) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/configman/parsers/ini.rb', line 33

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
  puts "Debug: About to pass these #{expected_keys} to the utils module"
  puts "and these #{loaded_modules}"
  puts "and this #{config_hash}"

  # Sort the keys into their respective sections
  sorted_config = Utils.sort_into_sections(config_hash, expected_keys, loaded_modules)

  # Debug statement to output the sorted_config
  #puts 'Debug: About to write the following sorted_config to INI file:'
  #p sorted_config

  # Write the sorted config to the INI file
  ini = IniFile.new(content: sorted_config)
  ini.write(filename: CONFIG_FILE_PATH)
end