Class: Harbinger::ConfigManager

Inherits:
Object
  • Object
show all
Defined in:
lib/harbinger/config_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(config_dir: default_config_dir) ⇒ ConfigManager

Returns a new instance of ConfigManager.



9
10
11
12
13
# File 'lib/harbinger/config_manager.rb', line 9

def initialize(config_dir: default_config_dir)
  @config_dir = config_dir
  @config_file = File.join(@config_dir, "config.yml")
  FileUtils.mkdir_p(@config_dir)
end

Instance Method Details

#get_project(name) ⇒ Object



32
33
34
# File 'lib/harbinger/config_manager.rb', line 32

def get_project(name)
  list_projects[name]
end

#list_projectsObject



27
28
29
30
# File 'lib/harbinger/config_manager.rb', line 27

def list_projects
  config = load_config
  config["projects"] || {}
end

#project_countObject



44
45
46
# File 'lib/harbinger/config_manager.rb', line 44

def project_count
  list_projects.size
end

#remove_project(name) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/harbinger/config_manager.rb', line 36

def remove_project(name)
  config = load_config
  return unless config["projects"]

  config["projects"].delete(name)
  write_config(config)
end

#save_project(name:, path:, versions: {}) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/harbinger/config_manager.rb', line 15

def save_project(name:, path:, versions: {})
  config = load_config
  config["projects"] ||= {}

  config["projects"][name] = {
    "path" => path,
    "last_scanned" => Time.now.iso8601
  }.merge(versions.transform_keys(&:to_s))

  write_config(config)
end