class EngineCart::Configuration

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/engine_cart/configuration.rb, line 8
def initialize(options = {})
  @verbose = options[:verbose]

  @options = load_configs(Array[options[:config]]).merge(options)
end

Public Instance Methods

default_destination() click to toggle source
# File lib/engine_cart/configuration.rb, line 61
def default_destination
  '.internal_test_app'
end
default_engine_name() click to toggle source
# File lib/engine_cart/configuration.rb, line 65
def default_engine_name
  File.basename(Dir.glob('*.gemspec').first, '.gemspec')
end
destination() click to toggle source

Destination to generate the test app into

# File lib/engine_cart/configuration.rb, line 34
def destination
  options[:destination]
end
engine_name() click to toggle source

Name of the engine we're testing

# File lib/engine_cart/configuration.rb, line 28
def engine_name
  options[:engine_name]
end
extra_fingerprinted_files() click to toggle source
# File lib/engine_cart/configuration.rb, line 57
def extra_fingerprinted_files
  options[:extra_fingerprinted_files]
end
load_configs(config_files) click to toggle source
# File lib/engine_cart/configuration.rb, line 14
def load_configs(config_files)
  config = default_config

  (default_configuration_paths + config_files.compact).each do |p|
    path = File.expand_path(p)
    next unless File.exist? path
    config.merge!(read_config(path))
  end

  config
end
rails_options() click to toggle source

Additional options when generating a test rails application

# File lib/engine_cart/configuration.rb, line 53
def rails_options
  Array(options[:rails_options])
end
template() click to toggle source

Path to a Rails application template

# File lib/engine_cart/configuration.rb, line 40
def template
  options[:template]
end
templates_path() click to toggle source

Path to test app templates to make available to the test app generator

# File lib/engine_cart/configuration.rb, line 47
def templates_path
  options[:templates_path]
end
verbose?() click to toggle source
# File lib/engine_cart/configuration.rb, line 69
def verbose?
  @verbose || (options && !!options.fetch(:verbose, false))
end

Private Instance Methods

convert_keys(hash) click to toggle source
# File lib/engine_cart/configuration.rb, line 105
def convert_keys(hash)
  hash.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
end
default_config() click to toggle source
# File lib/engine_cart/configuration.rb, line 75
def default_config
  {
    engine_name: ENV['CURRENT_ENGINE_NAME'] || default_engine_name,
    destination: ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || default_destination,
    template: ENV['ENGINE_CART_TEMPLATE'],
    templates_path: ENV['ENGINE_CART_TEMPLATES_PATH'] || './spec/test_app_templates',
    rails_options: parse_options(ENV['ENGINE_CART_RAILS_OPTIONS']),
    extra_fingerprinted_files: []
  }
end
default_configuration_paths() click to toggle source
# File lib/engine_cart/configuration.rb, line 109
def default_configuration_paths
  ['~/.engine_cart.yml', '.engine_cart.yml']
end
parse_options(options) click to toggle source

Split a string of options into individual options. @example

parse_options('--skip-foo --skip-bar -d postgres --skip-lala')
# => ["--skip-foo", "--skip-bar", "-d postgres", "--skip-lala"]
# File lib/engine_cart/configuration.rb, line 90
def parse_options(options)
  return if options.nil?
  options.scan(/(--[^\s]+|-[^\s]+\s+[^\s]+)/).flatten
end
read_config(config_file) click to toggle source
# File lib/engine_cart/configuration.rb, line 95
def read_config(config_file)
  $stdout.puts "Loading configuration from #{config_file}" if verbose?
  config = YAML.load(ERB.new(IO.read(config_file)).result(binding))
  unless config
    $stderr.puts "Unable to parse config #{config_file}" if verbose?
    return {}
  end
  convert_keys(config)
end