dg-vrnetze/filegen

View on GitHub
lib/filegen/data_source_builder.rb

Summary

Maintainability
A
0 mins
Test Coverage
# encoding: utf-8
module Filegen
  # Build data sources
  class DataSourceBuilder
    private

    attr_reader :params

    public

    # @!attribute [r] sources
    #   Return the sources generated
    attr_reader :sources

    # Create the data source builder
    #
    # @param [OpenStruct] params
    #   the params instance which contains all parameter of the commandline utility
    def initialize(params)
      @params = params

      validate_data_sources

      @sources = []
      chosen_data_sources.each do |o|
        @sources << known_data_source_builders[o]
      end
    end

    private

    def chosen_data_sources
      params.data_sources
    end

    def known_data_source_builders
      params.data_source_builders
    end

    def allowed_data_sources
      known_data_source_builders.keys
    end

    def validate_data_sources
      invalid_data_sources = chosen_data_sources - allowed_data_sources
      message = "Unknown data source#{invalid_data_sources.size > 1 ? 's' : ''} \"#{invalid_data_sources.join(', ')}\" found."
      fail Exceptions::DataSourcesAreInvalid, message unless invalid_data_sources.empty?
    end
  end
end