module StatsCloud::AssetsHelper
This helper works to gather and merge the configuration from files.
Private Instance Methods
array_fields()
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 118 def array_fields %w[dashboards] end
asset_selector_matches(filename, asset_selector)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 10 def asset_selector_matches(filename, asset_selector) includes = asset_selector["include"] excludes = asset_selector["exclude"] process_match(includes, filename) && !process_match(excludes, filename) end
collect_statscloud_assets(config, source_mappings, dir = ".")
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 16 def collect_statscloud_assets(config, source_mappings, dir = ".") asset_selector = get_checked_asset_selector(config) process_files(dir, config, source_mappings, asset_selector) end
get_checked_asset_selector(config)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 27 def get_checked_asset_selector(config) asset_selector = config["assetSelector"] || { "include" => ['.*\.statscloud.yml'], "exclude" => [] } asset_selector["include"] = put_to_array_if_needed(asset_selector["include"]) asset_selector["exclude"] = put_to_array_if_needed(asset_selector["exclude"]) asset_selector end
get_config_from_file(file)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 36 def get_config_from_file(file) return ::YAML.load_file(file) if File.exist?(file) {} end
it_config_file?(file_name, asset_selector)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 97 def it_config_file?(file_name, asset_selector) File.stat(file_name).file? && asset_selector_matches(file_name, asset_selector) end
it_directory?(file_name, entry)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 93 def it_directory?(file_name, entry) File.directory?(file_name) && !not_required_directory.include?(entry) end
it_not_empty_array?(extra_config, field)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 101 def it_not_empty_array?(extra_config, field) extra_config[field]&.kind_of?(Array) && extra_config[field].length.positive? end
join_configs(config, extra_config, source_mappings, file_name)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 21 def join_configs(config, extra_config, source_mappings, file_name) process_array_fields(config, extra_config, source_mappings, file_name) process_object_fields(config, extra_config, source_mappings, file_name) process_value_fields(config, extra_config) end
not_required_directory()
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 114 def not_required_directory %w[. ..] end
object_fields()
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 122 def object_fields %w[metrics admins alerts] end
process_array_fields(config, extra_config, source_mappings, file_name)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 61 def process_array_fields(config, extra_config, source_mappings, file_name) array_fields.each do |array_field| next unless it_not_empty_array?(extra_config, array_field) config[array_field] ||= [] source_mappings[array_field.to_sym].push(source_map_index(config, extra_config, array_field, file_name)) config[array_field] = config[array_field].concat(extra_config[array_field]) end end
process_files(dir, config, source_mappings, asset_selector)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 42 def process_files(dir, config, source_mappings, asset_selector) entries = Dir.entries(dir) entries.reduce({}) do |_config, entry| file_name = File.join(dir, entry) if it_directory?(file_name, entry) collect_statscloud_assets(config, source_mappings, file_name) elsif it_config_file?(file_name, asset_selector) extra_config = get_config_from_file(file_name) join_configs(config, extra_config, source_mappings, file_name) end end end
process_match(list, filename)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 55 def process_match(list, filename) list&.reduce(false) do |match, pattern| match || Regexp.new(pattern).match(filename) end end
process_object_fields(config, extra_config, source_mappings, file_name)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 71 def process_object_fields(config, extra_config, source_mappings, file_name) object_fields.each do |object_field| next unless extra_config[object_field]&.kind_of?(Hash) source_mappings[object_field.to_sym].push( fields: extra_config[object_field].keys, sourceFile: file_name ) config[object_field] = (config[object_field] || {}).merge(extra_config[object_field]) end end
process_value_fields(config, extra_config)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 83 def process_value_fields(config, extra_config) value_fields.each do |field| config[field] = extra_config[field] if config[field].nil? && !extra_config[field].nil? end end
put_to_array_if_needed(object)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 89 def put_to_array_if_needed(object) object.is_a?(Array) ? object : [object].compact end
source_map_index(config, extra_config, array_field, file_name)
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 105 def source_map_index(config, extra_config, array_field, file_name) start_index = config[array_field].length { startIndex: start_index, endIndex: start_index + extra_config[array_field].length - 1, sourceFile: file_name } end
value_fields()
click to toggle source
# File lib/statscloud/helpers/statscloud_client/assets_helper.rb, line 126 def value_fields %w[token application environment endpoint assetSelector propagateErrors passwordProtect retention flushIntervalInSeconds diskSize plugins] end