class Gemnasium::Configuration

Constants

DEFAULT_CONFIG

Attributes

api_key[RW]
api_version[RW]
ignored_paths[RW]
profile_name[RW]
project_branch[RW]
project_name[RW]
site[RW]
use_ssl[RW]

Public Class Methods

new(config_file) click to toggle source

Initialize the configuration object from a YAML file

@param config_file [String] path to the configuration file

# File lib/gemnasium/configuration.rb, line 14
def initialize config_file
  raise Errno::ENOENT, "Configuration file (#{config_file}) does not exist.\nPlease run `gemnasium install`." unless File.file?(config_file)

  config_hash = DEFAULT_CONFIG.merge!(YAML.load_file(config_file))
  config_hash.each do |k, v|
    writer_method = "#{k}="
    if respond_to?(writer_method)
      v = convert_ignored_paths_to_regexp(v) if k.to_s == 'ignored_paths'
      send(writer_method, v)
    end
  end

  raise 'Your configuration file does not contain all mandatory parameters or contain invalid values. Please check the documentation.' unless is_valid?
end

Private Instance Methods

convert_ignored_paths_to_regexp(paths) click to toggle source
# File lib/gemnasium/configuration.rb, line 47
def convert_ignored_paths_to_regexp(paths)
  return [] unless paths.kind_of? Array

  paths.inject([]) do |regexp_array, path|
    path = path.insert(0,'^')       # All path start from app root
               .gsub('*','[^/]+')   # Replace `*` to whatever char except slash
               .gsub('.','\.')      # Escape dots
    regexp_array << Regexp.new(path)
  end
end
is_valid?() click to toggle source

Check that mandatory parameters are not nil and contain valid values

@return [Boolean] if configuration is valid

# File lib/gemnasium/configuration.rb, line 34
def is_valid?
  site_option_valid               = !site.nil? && !site.empty?
  api_key_option_valid            = !api_key.nil? && !api_key.empty?
  use_ssl_option_valid            = !use_ssl.nil? && !!use_ssl == use_ssl # Check this is a boolean
  api_version_option_valid        = !api_version.nil? && !api_version.empty?
  profile_name_option_valid       = !profile_name.nil? && !profile_name.empty?
  project_name_option_valid       = !project_name.nil? && !project_name.empty?
  ignored_paths_option_valid      = ignored_paths.kind_of?(Array)

  site_option_valid && api_key_option_valid && use_ssl_option_valid && api_version_option_valid &&
  profile_name_option_valid && project_name_option_valid && ignored_paths_option_valid
end