43 lines
1.1 KiB
Ruby
43 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module StaticSiteEditor
|
|
module Config
|
|
#
|
|
# Base GitLab Static Site Editor Configuration facade
|
|
#
|
|
class FileConfig
|
|
ConfigError = Class.new(StandardError)
|
|
|
|
def initialize(yaml)
|
|
content_hash = content_hash(yaml)
|
|
@global = Entry::Global.new(content_hash)
|
|
@global.compose!
|
|
rescue Gitlab::Config::Loader::FormatError => e
|
|
raise FileConfig::ConfigError, e.message
|
|
end
|
|
|
|
def valid?
|
|
@global.valid?
|
|
end
|
|
|
|
def errors
|
|
@global.errors
|
|
end
|
|
|
|
def to_hash_with_defaults
|
|
# NOTE: The current approach of simply mapping all the descendents' keys and values ('config')
|
|
# into a flat hash may need to be enhanced as we add more complex, non-scalar entries.
|
|
@global.descendants.map { |descendant| [descendant.key, descendant.config] }.to_h
|
|
end
|
|
|
|
private
|
|
|
|
def content_hash(yaml)
|
|
Gitlab::Config::Loader::Yaml.new(yaml).load!
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|