module CapistranoMulticonfigParallel::Configuration

class that holds the options that are configurable for this gem

Public Instance Methods

check_array_of_hash(value, props) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 62
def check_array_of_hash(value, props)
  value.find do|hash|
    check_hash_set(hash, props)
  end
end
check_array_props(props) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 87
def check_array_props(props)
  props.each do |prop|
    value = get_prop_config(prop)
    @check_config[prop] = value if value_is_array?(value) && verify_array_of_strings(value)
  end
end
check_boolean(prop) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 68
def check_boolean(prop)
  value = get_prop_config(prop)
  if %w(true false).include?(value.to_s.downcase)
    true
  else
    raise ArgumentError, "the property `#{prop}` must be boolean"
  end
end
check_boolean_props(props) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 81
def check_boolean_props(props)
  props.each do |prop|
    @check_config[prop] = get_prop_config(prop) if check_boolean(prop)
  end
end
check_configuration(config) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 116
def check_configuration(config)
  @check_config = config.stringify_keys
  check_boolean_props(%w(multi_debug multi_secvential websocket_server.enable_debug terminal.clear_screen check_app_bundler_dependencies))
  check_string_props(%w(websocket_server.adapter))
  check_array_props(%w(task_confirmations development_stages apply_stage_confirmation))
  check_directories(%w(log_dir config_dir))
  verify_application_dependencies(@check_config['application_dependencies'], %w(app priority dependencies))
end
check_directories(props) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 109
def check_directories(props)
  props.each do |prop|
    value = get_prop_config(prop)
    @check_config[prop] = value if value.present? && File.directory?(value)
  end
end
check_string_props(props) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 94
def check_string_props(props)
  props.each do |prop|
    value = get_prop_config(prop)
    @check_config[prop] = value if value.is_a?(String)
  end
end
configuration_valid?() click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 77
def configuration_valid?
  configuration
end
fetch_configuration() click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 11
def fetch_configuration
  @fetched_config = Configliere::Param.new
  setup_default_config
  setup_configuration
end
get_prop_config(prop, config = @check_config) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 101
def get_prop_config(prop, config = @check_config)
  if prop.include?('.')
    multi_level_prop(config, prop)
  else
    config[prop]
  end
end
read_config_file() click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 39
def read_config_file
  return if CapistranoMulticonfigParallel.original_args.present? && CapistranoMulticonfigParallel.original_args.include?('--help')
  user = Etc.getlogin
  config_file_path = File.join(Dir.home(user), "multi_cap.yml")
  if File.exists?(config_file_path)
    @fetched_config.config_dir  = File.dirname(config_file_path)
  else
    @fetched_config.config_dir = @fetched_config.config_dir.present? ? File.expand_path(@fetched_config.config_dir) : try_detect_file('multi_cap.yml')
    config_file_path = @fetched_config.config_dir.present? ? File.join(@fetched_config.config_dir, 'multi_cap.yml') : nil
  end
  config_file = File.expand_path(config_file_path || File.join(detect_root.to_s, 'config', 'multi_cap.yml'))
  @fetched_config.config_dir = File.dirname(config_file)
  @fetched_config.log_dir = config_file_path.present? ? File.dirname(config_file) : File.dirname(File.dirname(config_file))
  @fetched_config.read config_file if File.file?(config_file)
end
setup_configuration() click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 23
def setup_configuration
  @fetched_config.use :commandline
  @fetched_config.process_argv!
  read_config_file
  @fetched_config.use :config_block
  validate_configuration
end
setup_default_config() click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 17
def setup_default_config
  default_internal_config.each do |array_param|
    @fetched_config.define array_param[0], array_param[1].symbolize_keys
  end
end
validate_configuration() click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 31
def validate_configuration
  @fetched_config.finally do |config|
    check_configuration(config)
  end
  @fetched_config.resolve!
  @fetched_config
end
verify_application_dependencies(value, props) click to toggle source
# File lib/capistrano_multiconfig_parallel/helpers/configuration.rb, line 55
def verify_application_dependencies(value, props)
  return unless value.is_a?(Array)
  value.reject { |val| val.blank? || !val.is_a?(Hash) }
  wrong = check_array_of_hash(value, props.map(&:to_sym))
  raise ArgumentError, "invalid configuration for #{wrong.inspect}" if wrong.present?
end