Class: CLI::Kit::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/cli/kit/config.rb

Constant Summary collapse

XDG_CONFIG_HOME =
'XDG_CONFIG_HOME'

Instance Method Summary collapse

Constructor Details

#initialize(tool_name:) ⇒ Config

Returns a new instance of Config.



9
10
11
# File 'lib/cli/kit/config.rb', line 9

def initialize(tool_name:)
  @tool_name = tool_name
end

Instance Method Details

#fileObject

The path on disk at which the configuration is stored:

`$XDG_CONFIG_HOME/<toolname>/config`

if ENV is not set, we default to ~/.config, e.g.:

~/.config/tool/config


73
74
75
76
# File 'lib/cli/kit/config.rb', line 73

def file
  config_home = ENV.fetch(XDG_CONFIG_HOME, '~/.config')
  File.expand_path(File.join(@tool_name, 'config'), config_home)
end

#get(section, name) ⇒ Object

Returns the config corresponding to ‘name` from the config file `false` is returned if it doesn’t exist

#### Parameters ‘section` : the section of the config value you are looking for `name` : the name of the config value you are looking for

#### Returns ‘value` : the value of the config variable (false if none)

#### Example Usage ‘config.get(’name.of.config’)‘



26
27
28
# File 'lib/cli/kit/config.rb', line 26

def get(section, name)
  all_configs.dig("[#{section}]", name) || false
end

#get_path(section, name = nil) ⇒ Object

Returns a path from config in expanded form e.g. shopify corresponds to ~/src/shopify, but is expanded to /Users/name/src/shopify

#### Example Usage ‘config.get_path(’srcpath’, ‘shopify’)‘

#### Returns ‘path` : the expanded path to the corrsponding value



59
60
61
62
# File 'lib/cli/kit/config.rb', line 59

def get_path(section, name = nil)
  v = get(section, name)
  false == v ? v : File.expand_path(v)
end

#get_section(section) ⇒ Object



46
47
48
# File 'lib/cli/kit/config.rb', line 46

def get_section(section)
  (all_configs["[#{section}]"] || {}).dup
end

#set(section, name, value) ⇒ Object

Sets the config value in the config file

#### Parameters ‘section` : the section of the config you are setting `name` : the name of the config you are setting `value` : the value of the config you are setting

#### Example Usage ‘config.set(’section’, ‘name.of.config’, ‘value’)‘



40
41
42
43
44
# File 'lib/cli/kit/config.rb', line 40

def set(section, name, value)
  all_configs["[#{section}]"] ||= {}
  all_configs["[#{section}]"][name] = value.nil? ? nil : value.to_s
  write_config
end

#to_sObject



64
65
66
# File 'lib/cli/kit/config.rb', line 64

def to_s
  ini.to_s
end