require 'dry/container'
require 'logger'
module Oxygen
class Configuration
extend Dry::Container::Mixin
# default configuration
register('reports', [])
register('utils.logger', Logger.new($stdout))
module Reports
def self.register(configuration)
raise ArgumentError unless %i(name url section).all? { |key| configuration.keys.include?(key) }
Configuration['reports'] << configuration
self
end
def self.all
Configuration['reports']
end
end
end
end
Oxygen::Configuration::Reports.register(name: '...', url: '...', section: '...')
Oxygen::Configuration::Reports.all # => [...]
Oxygen::Configuration['reports'] # => [...]