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