Sha256: 567c7cf331d0b1f4ae2a3175a285ca7ac1eb2f4e6098ebf95fc9f8761959ecb5

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require 'yaml'

module GFSM
  module Data
    class Configuration
      attr_reader :change_types

      def initialize(config_path)
        @change_types = []

        configuration = YAML.load_file(config_path)

        configuration.each do |key, value|
          if key == "change_types"
            self.load_change_types(value)
          end
        end

        @change_types
      end

      def get_change_type_from_category(category)
        @change_types.find do |change_type|
          category.match(change_type.matcher)
        end
      end

      private

      def load_change_types(change_types_config)
        change_types_config.each do |key, value|
          if !value.include?("matcher")
            raise "Change type #{key} is missing the matcher"
          end

          @change_types << GFSM::Data::ChangeType.new(
            /#{Regexp.quote(value["matcher"])}/i,
            value.include?("title") ? value["title"] : 'no-title',
            value.include?("bump") ? value["bump"].to_sym : :patch,
            value.include?("priority") ? value["priority"] : -100,
            value.include?("ignore_on_changelog") ? value["ignore_on_changelog"] : false,
          )
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gfsm-0.8.0 lib/data/configuration.rb