class Tlapse::Config
Constants
- CONFIG_KEYS
- CONFIG_OPTIONS
- CONFIG_PATH
- CONFIG_UNDEFINED
- Validation
Public Class Methods
get(*options)
click to toggle source
# File lib/tlapse/config.rb, line 50 def self.get(*options) values = Array(options).map do |option| verify_option_exists! option value = value_for option value == CONFIG_UNDEFINED ? default_for(option) : value end values.length == 1 ? values.first : values end
list()
click to toggle source
# File lib/tlapse/config.rb, line 46 def self.list CONFIG_OPTIONS end
set(option, value)
click to toggle source
# File lib/tlapse/config.rb, line 61 def self.set(option, value) verify_option_exists! option validate! option, value values = user_values if value == default_for(option) values.delete option else values[option] = value end save values end
unset(option)
click to toggle source
# File lib/tlapse/config.rb, line 76 def self.unset(option) set option, default_for(option) end
Private Class Methods
cast(option, value)
click to toggle source
# File lib/tlapse/config.rb, line 88 def self.cast(option, value) case type_for(option) when :integer then value.to_i when :float then value.to_f when :string then value.to_s else value end end
current_tz()
click to toggle source
# File lib/tlapse/config.rb, line 82 def self.current_tz utc_offset = Time.now.utc_offset tz = ActiveSupport::TimeZone.all.find { |tz| tz.utc_offset == utc_offset } tz&.tzinfo&.name || "America/New_York" end
default_for(option)
click to toggle source
# File lib/tlapse/config.rb, line 106 def self.default_for(option) default = CONFIG_OPTIONS.dig option, :default default = default.call if default.respond_to? :call cast option, default end
save(user_values)
click to toggle source
# File lib/tlapse/config.rb, line 120 def self.save(user_values) FileUtils.mkdir_p File.dirname CONFIG_PATH File.write CONFIG_PATH, user_values.to_yaml end
type_for(option)
click to toggle source
# File lib/tlapse/config.rb, line 112 def self.type_for(option) CONFIG_OPTIONS.dig option, :type end
user_values()
click to toggle source
# File lib/tlapse/config.rb, line 116 def self.user_values File.exists?(CONFIG_PATH) ? YAML.load_file(CONFIG_PATH) : {} end
validate!(option, value)
click to toggle source
# File lib/tlapse/config.rb, line 125 def self.validate!(option, value) Array(CONFIG_OPTIONS.dig(option, :validations)).each do |validation| begin validation.method.call value rescue message = validation.error.call value raise ConfigOptionInvalid, message end end end
value_for(option)
click to toggle source
# File lib/tlapse/config.rb, line 101 def self.value_for(option) value = user_values[option] value ? cast(option, value) : CONFIG_UNDEFINED end
verify_option_exists!(option)
click to toggle source
# File lib/tlapse/config.rb, line 97 def self.verify_option_exists!(option) raise Tlapse::NoSuchConfigOption unless CONFIG_KEYS.include? option end