todo/backend/src/utils/config.cr

54 lines
919 B
Crystal

require "file"
require "json"
require "log"
class ConfigInstance
@@config = {} of String => JSON::Any
@@loaded = false
def config
@@config
end
def config=(new_value)
@@config = new_value
end
def loaded
@@loaded
end
def loaded=(new_value)
@@loaded = new_value
end
end
Instance = ConfigInstance.new
module Config
extend self
def get_config_value(key) : JSON::Any | Nil
Log.debug { "looking for #{key}" }
if Instance.config.has_key? key
Instance.config[key]
else
nil
end
end
def is_loaded : Bool
Instance.loaded
end
def load_config : Nil
loaded_config = File.open("config.json") do |file|
Hash(String, JSON::Any).from_json(file)
end
Log.debug { "loaded config is #{loaded_config}" }
Instance.config = loaded_config
Instance.loaded = true
Log.debug { "instance config is #{Instance.config}" }
end
end