module NewRelicYML
Constants
- CRITICAL
- DEFAULTS
- FOOTER
- HEADER
- PROCS
Don’t evaluate Procs, instead use set values
- SKIP
Skip because not configurable via yml
Public Class Methods
build_string(defaults)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 128 def self.build_string(defaults) configs = get_configs(defaults) yml_string = '' configs.each do |key, value| yml_string += "#{value[:description]}\n # #{key}: #{value[:default]}\n\n" end yml_string end
default_value(key, config_hash)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 116 def self.default_value(key, config_hash) if PROCS.include?(key) PROCS[key] else default = config_hash[:documentation_default].nil? ? config_hash[:default] : config_hash[:documentation_default] default = 'nil' if default.nil? default = '""' if default == '' default end end
deprecated?(value)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 86 def self.deprecated?(value) value[:deprecated] == true end
format_description(description)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 105 def self.format_description(description) # remove leading and trailing whitespace description.strip! # wrap text after 80 characters description.gsub!(/(.{1,80})(\s+|\Z)/, "\\1\n") # add hashtags to lines description = description.split("\n").map { |line| " # #{line}" }.join("\n") description end
get_configs(defaults)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 69 def self.get_configs(defaults) defaults.sort.each_with_object({}) do |(key, value), final_configs| next if CRITICAL.include?(key) || SKIP.include?(key) next unless public_config?(value) && !deprecated?(value) sanitized_description = sanitize_description(value[:description]) description = format_description(sanitized_description) default = default_value(key, value) final_configs[key] = {description: description, default: default} end end
public_config?(value)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 82 def self.public_config?(value) value[:public] == true end
sanitize_description(description)
click to toggle source
# File lib/tasks/helpers/newrelicyml.rb, line 90 def self.sanitize_description(description) # remove callouts description = description.split("\n").reject { |line| line.match?('</?Callout') }.join("\n") # remove InlinePopover, keep the text inside type description.gsub!(/<InlinePopover type="(.*)" \/>/, '\1') # remove hyperlinks description.gsub!(/\[([^\]]+)\]\([^\)]+\)/, '\1') # remove single pairs of backticks description.gsub!(/`([^`]+)`/, '\1') # removed href links description.gsub!(/<a href="(.*)">(.*)<\/a>/, '\2') description end
write_file(defaults = DEFAULTS)
click to toggle source
:nocov:
# File lib/tasks/helpers/newrelicyml.rb, line 140 def self.write_file(defaults = DEFAULTS) File.write('newrelic.yml', HEADER + build_string(defaults) + FOOTER) end