Class: GraphQL::Modernize::Config
- Inherits:
-
Object
- Object
- GraphQL::Modernize::Config
- Defined in:
- lib/graphql/modernize/config.rb
Constant Summary collapse
- DEFAULT_INCLUDE =
["app/graphql/**/*.rb", "lib/graphql/**/*.rb"].freeze
- DEFAULT_EXCLUDE =
["vendor/**/*", "tmp/**/*"].freeze
- BASE_CLASS_KINDS =
%w[object input_object enum interface union resolver mutation subscription schema].freeze
- DEFAULTS =
{ "include" => DEFAULT_INCLUDE, "exclude" => DEFAULT_EXCLUDE, "base_classes" => {}, "rules" => {}, "apply_unsafe" => false, "require_suppression_reason" => false, "iterations" => 3 }.freeze
- KEYS =
(DEFAULTS.keys + %w[from_version target_version ruby_version]).freeze
Instance Attribute Summary collapse
-
#apply_unsafe ⇒ Object
readonly
Returns the value of attribute apply_unsafe.
-
#base_classes ⇒ Object
readonly
Returns the value of attribute base_classes.
-
#exclude_patterns ⇒ Object
readonly
Returns the value of attribute exclude_patterns.
-
#from_version ⇒ Object
readonly
Returns the value of attribute from_version.
-
#include_patterns ⇒ Object
readonly
Returns the value of attribute include_patterns.
-
#iterations ⇒ Object
readonly
Returns the value of attribute iterations.
-
#require_suppression_reason ⇒ Object
readonly
Returns the value of attribute require_suppression_reason.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
-
#ruby_version ⇒ Object
readonly
Returns the value of attribute ruby_version.
-
#rules ⇒ Object
readonly
Returns the value of attribute rules.
-
#target_version ⇒ Object
readonly
Returns the value of attribute target_version.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(root: Dir.pwd, include_patterns: DEFAULT_INCLUDE, exclude_patterns: DEFAULT_EXCLUDE, base_classes: {}, rules: {}, ruby_version: nil, apply_unsafe: false, from_version: nil, target_version: nil, require_suppression_reason: false, iterations: 3) ⇒ Config
constructor
A new instance of Config.
- #rule_enabled?(metadata) ⇒ Boolean
- #rule_options(rule_id) ⇒ Object
Constructor Details
#initialize(root: Dir.pwd, include_patterns: DEFAULT_INCLUDE, exclude_patterns: DEFAULT_EXCLUDE, base_classes: {}, rules: {}, ruby_version: nil, apply_unsafe: false, from_version: nil, target_version: nil, require_suppression_reason: false, iterations: 3) ⇒ Config
Returns a new instance of Config.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/graphql/modernize/config.rb', line 45 def initialize(root: Dir.pwd, include_patterns: DEFAULT_INCLUDE, exclude_patterns: DEFAULT_EXCLUDE, base_classes: {}, rules: {}, ruby_version: nil, apply_unsafe: false, from_version: nil, target_version: nil, require_suppression_reason: false, iterations: 3) validate!(include_patterns, exclude_patterns, base_classes, rules, apply_unsafe, require_suppression_reason, iterations, ruby_version, from_version, target_version) @root = File.(root) @include_patterns = Array(include_patterns).freeze @exclude_patterns = Array(exclude_patterns).freeze @base_classes = base_classes.transform_keys(&:to_sym).transform_values { |names| Array(names) }.freeze @rules = rules.to_h { |id, | [id.to_s.upcase, .transform_keys(&:to_s).freeze] }.freeze @ruby_version = ruby_version @apply_unsafe = apply_unsafe @from_version = from_version || locked_graphql_version @target_version = target_version || locked_graphql_version if @from_version && @target_version && Gem::Version.new(@from_version) > Gem::Version.new(@target_version) raise Error, "from_version must be less than or equal to target_version" end @require_suppression_reason = require_suppression_reason @iterations = iterations rescue ArgumentError => e raise Error, "Invalid version configuration: #{e.}" end |
Instance Attribute Details
#apply_unsafe ⇒ Object (readonly)
Returns the value of attribute apply_unsafe.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def apply_unsafe @apply_unsafe end |
#base_classes ⇒ Object (readonly)
Returns the value of attribute base_classes.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def base_classes @base_classes end |
#exclude_patterns ⇒ Object (readonly)
Returns the value of attribute exclude_patterns.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def exclude_patterns @exclude_patterns end |
#from_version ⇒ Object (readonly)
Returns the value of attribute from_version.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def from_version @from_version end |
#include_patterns ⇒ Object (readonly)
Returns the value of attribute include_patterns.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def include_patterns @include_patterns end |
#iterations ⇒ Object (readonly)
Returns the value of attribute iterations.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def iterations @iterations end |
#require_suppression_reason ⇒ Object (readonly)
Returns the value of attribute require_suppression_reason.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def require_suppression_reason @require_suppression_reason end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def root @root end |
#ruby_version ⇒ Object (readonly)
Returns the value of attribute ruby_version.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def ruby_version @ruby_version end |
#rules ⇒ Object (readonly)
Returns the value of attribute rules.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def rules @rules end |
#target_version ⇒ Object (readonly)
Returns the value of attribute target_version.
22 23 24 |
# File 'lib/graphql/modernize/config.rb', line 22 def target_version @target_version end |
Class Method Details
.load(root: Dir.pwd, path: nil, overrides: {}) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/graphql/modernize/config.rb', line 26 def self.load(root: Dir.pwd, path: nil, overrides: {}) root = File.(root) path ||= File.join(root, ".graphql-modernize.yml") = File.file?(path) ? YAML.safe_load_file(path, aliases: false) : {} raise Error, "The configuration root must be a mapping" unless .nil? || .is_a?(Hash) = DEFAULTS.merge( || {}).merge(overrides.compact.transform_keys(&:to_s)) unknown = .keys - KEYS raise Error, "Unknown configuration keys: #{unknown.join(', ')}" unless unknown.empty? new(root: root, include_patterns: ["include"], exclude_patterns: ["exclude"], base_classes: ["base_classes"], rules: ["rules"], ruby_version: ["ruby_version"], apply_unsafe: ["apply_unsafe"], from_version: ["from_version"], target_version: ["target_version"], require_suppression_reason: ["require_suppression_reason"], iterations: ["iterations"]) rescue Psych::Exception => e raise Error, "Unable to load the configuration file: #{e.}" end |
Instance Method Details
#rule_enabled?(metadata) ⇒ Boolean
70 71 72 73 |
# File 'lib/graphql/modernize/config.rb', line 70 def rule_enabled?() configured = rules.fetch(.id, {}) configured.fetch("enabled", .default_enabled) end |
#rule_options(rule_id) ⇒ Object
75 76 77 |
# File 'lib/graphql/modernize/config.rb', line 75 def (rule_id) rules.fetch(rule_id, {}) end |