Sha256: a1f96de26f29668e78e7080b801be96089eb278c501b6d289672895c23eeddf3

Contents?: true

Size: 1.71 KB

Versions: 35

Compression:

Stored size: 1.71 KB

Contents

require "yaml"

module CC
  module Analyzer
    # TODO: replace each use of this with CC::Yaml and remove it
    class Config
      def initialize(config_body)
        @config = YAML.safe_load(config_body) || {"engines"=> {} }
        @config["engines"] ||= {}

        expand_shorthand
      end

      def to_hash
        @config
      end

      def engine_config(engine_name)
        @config["engines"][engine_name] || {}
      end

      def engine_names
        @config["engines"].keys.select { |name| engine_enabled?(name) }
      end

      def engine_present?(engine_name)
        @config["engines"][engine_name].present?
      end

      def engine_enabled?(engine_name)
        @config["engines"][engine_name] && @config["engines"][engine_name]["enabled"]
      end

      def enable_engine(engine_name)
        if engine_present?(engine_name)
          @config["engines"][engine_name]["enabled"] = true
        else
          @config["engines"][engine_name] = { "enabled" => true }
        end
      end

      def exclude_paths
        @config["exclude_paths"]
      end

      def disable_engine(engine_name)
        if engine_present?(engine_name) && engine_enabled?(engine_name)
          @config["engines"][engine_name]["enabled"] = false
        end
      end

      def remove_engine(engine_name)
        if engine_present?(engine_name)
          @config["engines"].delete(engine_name)
        end
      end

      def to_yaml
        @config.to_yaml
      end

    private

      def expand_shorthand
        @config["engines"].each do |name, engine_config|
          if [true, false].include?(engine_config)
            @config["engines"][name] = { "enabled" => engine_config }
          end
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
codeclimate-0.9.7 lib/cc/analyzer/config.rb
codeclimate-0.9.6 lib/cc/analyzer/config.rb
codeclimate-0.9.5 lib/cc/analyzer/config.rb
codeclimate-0.9.4 lib/cc/analyzer/config.rb
codeclimate-0.9.3 lib/cc/analyzer/config.rb
codeclimate-0.9.2 lib/cc/analyzer/config.rb
codeclimate-0.9.1 lib/cc/analyzer/config.rb
codeclimate-0.9.0 lib/cc/analyzer/config.rb
codeclimate-0.8.1 lib/cc/analyzer/config.rb
codeclimate-0.8.0 lib/cc/analyzer/config.rb
codeclimate-0.7.2 lib/cc/analyzer/config.rb
codeclimate-0.7.0 lib/cc/analyzer/config.rb
codeclimate-0.6.4 lib/cc/analyzer/config.rb
codeclimate-0.6.3 lib/cc/analyzer/config.rb
codeclimate-0.6.2 lib/cc/analyzer/config.rb
codeclimate-0.6.1 lib/cc/analyzer/config.rb
codeclimate-0.6.0 lib/cc/analyzer/config.rb
codeclimate-0.5.0 lib/cc/analyzer/config.rb
codeclimate-0.4.4 lib/cc/analyzer/config.rb
codeclimate-0.4.3 lib/cc/analyzer/config.rb