Sha256: 8414ad3c350bf656c866059812ce7f8c2fbefe039b4d8c93700d0b3de0997c52

Contents?: true

Size: 1.09 KB

Versions: 4

Compression:

Stored size: 1.09 KB

Contents

require 'extlib'

module NexusCli
  module Configuration
    DEFAULT_FILE = "~/.nexus_cli".freeze

    class << self
      attr_writer :path

      # The filepath to the nexus cli configuration file
      #
      # @return [String]
      def path
        @path || File.expand_path(ENV['NEXUS_CONFIG'] || DEFAULT_FILE)
      end

      # @param [Hash] overrides
      #
      # @return [Hash]
      def parse(overrides = {})
        config = File.exists?(self.path) ? YAML::load_file(self.path) : Hash.new

        if config.nil? && (overrides.nil? || overrides.empty?)
          raise MissingSettingsFileException
        end

        unless overrides.nil? || overrides.empty?
          overrides.each { |key, value| config[key] = value }
        end

        validate_config(config)

        config["repository"] = config["repository"].gsub(" ", "_").downcase
        config
      end

      def validate_config(configuration)
        ["url", "repository", "username", "password"].each do |key|
          raise InvalidSettingsException.new(key) if configuration[key].blank?
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nexus_cli-3.0.0 lib/nexus_cli/configuration.rb
nexus_cli-2.0.2 lib/nexus_cli/configuration.rb
nexus_cli-2.0.1 lib/nexus_cli/configuration.rb
nexus_cli-2.0.0 lib/nexus_cli/configuration.rb