54 lines
919 B
Crystal
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
|