Sha256: da4d52d72f55f3682d9310c4f81ca2869a72348835d85c6945ea44fe1948afc2

Contents?: true

Size: 1.82 KB

Versions: 23

Compression:

Stored size: 1.82 KB

Contents

require "yaml"
require "pathname"
require_relative "file_finder"
require_relative "parses_cli_option"

module Standard
  class LoadsYamlConfig
    def call(standard_yaml_path, todo_yaml_path)
      standard_yaml = load_standard_yaml(standard_yaml_path)
      todo_yaml = load_standard_yaml(todo_yaml_path)

      construct_config(standard_yaml_path, standard_yaml, todo_yaml_path, todo_yaml)
    end

    private

    def load_standard_yaml(yaml_path)
      if yaml_path
        YAML.load_file(yaml_path) || {}
      else
        {}
      end
    end

    def construct_config(yaml_path, standard_yaml, todo_path, todo_yaml)
      {
        ruby_version: normalized_ruby_version(standard_yaml["ruby_version"]),
        fix: !!standard_yaml["fix"],
        format: standard_yaml["format"],
        parallel: !!standard_yaml["parallel"],
        ignore: expand_ignore_config(standard_yaml["ignore"]) + expand_ignore_config(todo_yaml["ignore"]),
        default_ignores: standard_yaml.key?("default_ignores") ? !!standard_yaml["default_ignores"] : true,
        config_root: yaml_path ? Pathname.new(yaml_path).dirname.to_s : nil,
        todo_file: todo_path,
        todo_ignore_files: (todo_yaml["ignore"] || []).map { |f| Hash === f ? f.keys.first : f }
      }
    end

    def normalized_ruby_version(version)
      return version if version && !Gem::Version.correct?(version)

      Gem::Version.new(version || RUBY_VERSION)
    end

    def expand_ignore_config(ignore_config)
      arrayify(ignore_config).map { |rule|
        if rule.is_a?(String)
          [rule, ["AllCops"]]
        elsif rule.is_a?(Hash)
          rule.entries.first
        end
      }
    end

    def arrayify(object)
      if object.nil?
        []
      elsif object.respond_to?(:to_ary)
        object.to_ary || [object]
      else
        [object]
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
standard-1.18.1 lib/standard/loads_yaml_config.rb
standard-1.18.0 lib/standard/loads_yaml_config.rb
standard-1.17.0 lib/standard/loads_yaml_config.rb
standard-1.16.1 lib/standard/loads_yaml_config.rb
standard-1.16.0 lib/standard/loads_yaml_config.rb
standard-1.15.0 lib/standard/loads_yaml_config.rb
standard-1.14.0 lib/standard/loads_yaml_config.rb
standard-1.13.0 lib/standard/loads_yaml_config.rb
standard-1.12.1 lib/standard/loads_yaml_config.rb
standard-1.12.0 lib/standard/loads_yaml_config.rb
standard-1.11.0 lib/standard/loads_yaml_config.rb
standard-1.10.0 lib/standard/loads_yaml_config.rb
standard-1.9.1 lib/standard/loads_yaml_config.rb
standard-1.9.0 lib/standard/loads_yaml_config.rb
op_connect-0.1.2 vendor/bundle/ruby/3.1.0/gems/standard-1.8.0/lib/standard/loads_yaml_config.rb
standard-1.8.0 lib/standard/loads_yaml_config.rb
standard-1.7.3 lib/standard/loads_yaml_config.rb
standard-1.7.2 lib/standard/loads_yaml_config.rb
standard-1.7.1 lib/standard/loads_yaml_config.rb
standard-1.7.0 lib/standard/loads_yaml_config.rb