lib/vagrant-invade/action/process.rb in vagrant-invade-0.6.1 vs lib/vagrant-invade/action/process.rb in vagrant-invade-0.6.2
- old
+ new
@@ -11,112 +11,125 @@
@env = env
@validator = VagrantPlugins::Invade::Validator::Validator.new(env)
@generator = VagrantPlugins::Invade::Generator::Generator.new(env)
+ @invade_machine = Hash.new
+ @invade_machine_part = Hash.new
+ @invade_vagrantfile = Hash.new
+
+ @generate = @env[:invade_generate]
+ @quiet = @env[:invade_validate_quiet]
+
@logger = Log4r::Logger.new('vagrant::invade::action::validate')
end
def call(env)
- config = env[:invade]
- quiet = @env[:invade_validate_quiet]
- generate = @env[:invade_generate]
- invade_machine = Hash.new
- invade_machine_part = Hash.new
- invade_vagrantfile = Hash.new
+ config = env[:invade]
- ###############################################################
- # Validate the settings and set default variables if needed
- ###############################################################
-
# Remove empty Hashes
config.delete_blank
config.each do |config_key, config_data|
-
if config_key == 'machines'
+ process_machines(config_data)
+ else
+ process_vagrant_part(config_key, config_data)
+ end
+ end
- # Iterate over machine configurations
- config_data.each_with_index do |(machine, machine_part), _|
+ @env[:invade]['vagrantfile'] = generate(
+ data: @invade_vagrantfile,
+ generator_type: Invade::Generator::Type::VAGRANTFILE
+ ) if @generate
- # Iterate over each machine part configuration
- machine_part.each do |machine_part_name, machine_part_data|
- @env[:ui].info("\n[Invade][Machine: #{machine.upcase}]: Validating #{machine_part_name.upcase} part...") unless quiet
+ @env[:invade].delete('machines')
- # Is nested synced_folder, network, provision, or plugin part hash
- if machine_part_data.depth > 1
+ @app.call(env)
+ end
- invade_machine_part[machine_part_name] = ''
- machine_part_data.each do |value_name, value_data|
+ private
- # Output info message
- info_message = "\t#{machine_part_name.split('_').collect(&:capitalize).join}: #{value_name}"
- @env[:ui].info(info_message) unless @env[:invade_validate_quiet]
+ def process_machines(machines)
+
+ # Iterate over machine configurations
+ machines.each_with_index do |(machine, machine_data), _|
+ process_machine(machine, machine_data)
+ end
- # Exception handling for synced_folder and provision types
- if machine_part_name == 'synced_folder' or machine_part_name == 'provision'
- value_name = value_data['type']
- value_data.delete('type')
- end
+ @invade_vagrantfile['machines'] = @invade_machine
+ @env[:ui].success "\n[Invade]: Processed #{machines.count} machine(s)."
- validated_data = validate(machine_part_name, value_name, value_data, machine_part_data.depth)
- invade_machine_part[machine_part_name].concat(
- generate(
- machine_name: machine,
- part: machine_part_name,
- part_type: value_name,
- data: validated_data,
- generator_type: Invade::Generator::Type::MACHINE_NESTED_PART
- )
- ) if generate
- end
- else # Is VM, or SSH part
- validated_data = validate('Machine', machine_part_name, machine_part_data, machine_part_data.depth)
- invade_machine_part[machine_part_name] = generate(
- machine_name: machine,
- part_type: machine_part_name,
- data: validated_data,
- generator_type: Invade::Generator::Type::MACHINE_PART
- ) if generate
- end
- end
+ end
- invade_machine[machine] = generate(
- machine_name: machine,
- data: invade_machine_part,
- generator_type: Invade::Generator::Type::MACHINE
- )
+ def process_machine(machine_name, machine_data)
+ # Iterate over each machine part configuration
+ machine_data.each do |machine_part_name, machine_part_data|
+ @env[:ui].info("\n[Invade][Machine: #{machine_name.upcase}]: Validating #{machine_part_name.upcase} part...") unless @quiet
- end
+ if machine_part_data.depth > 1
+ process_machine_nested_part(machine_name, machine_part_name, machine_part_data)
+ else
+ process_machine_part(machine_name, machine_part_name, machine_part_data)
+ end
- invade_vagrantfile['machines'] = invade_machine
- @env[:ui].success "\n[Invade]: Processed #{config_data.count} machine(s)."
+ @invade_machine[machine_name] = generate(
+ machine_name: machine_name,
+ data: @invade_machine_part,
+ generator_type: Invade::Generator::Type::MACHINE
+ )
+ end
+ end
- else
+ def process_machine_part(machine, machine_part_name, machine_part_data)
+ validated_data = validate('Machine', machine_part_name, machine_part_data, machine_part_data.depth)
+ @invade_machine_part[machine_part_name] = generate(
+ machine_name: machine,
+ part_type: machine_part_name,
+ data: validated_data,
+ generator_type: Invade::Generator::Type::MACHINE_PART
+ ) if @generate
+ end
- # Info message
- @env[:ui].info("\n[Invade]: Validating #{config_key.upcase} part...") unless quiet
+ def process_machine_nested_part(machine, machine_part_name, machine_part_data)
- validated_data = validate(config_key, config_key, config_data, config_data.depth)
- invade_vagrantfile[config_key] = generate(
- part_type: config_key,
- data: validated_data,
- generator_type: Invade::Generator::Type::VAGRANT_PART
- ) if generate
+ @invade_machine_part[machine_part_name] = ''
+ machine_part_data.each do |value_name, value_data|
+ # Output info message
+ info_message = "\t#{machine_part_name.split('_').collect(&:capitalize).join}: #{value_name}"
+ @env[:ui].info(info_message) unless @env[:invade_validate_quiet]
+
+ # Exception handling for synced_folder and provision types
+ if machine_part_name == 'synced_folder' or machine_part_name == 'provision'
+ value_name = value_data['type']
+ value_data.delete('type')
end
+ validated_data = validate(machine_part_name, value_name, value_data, machine_part_data.depth)
+ @invade_machine_part[machine_part_name].concat(
+ generate(
+ machine_name: machine,
+ part: machine_part_name,
+ part_type: value_name,
+ data: validated_data,
+ generator_type: Invade::Generator::Type::MACHINE_NESTED_PART
+ )
+ ) if @generate
end
+
+ end
- @env[:invade]['vagrantfile'] = generate(
- data: invade_vagrantfile,
- generator_type: Invade::Generator::Type::VAGRANTFILE
- ) if generate
+ def process_vagrant_part(config_key, config_data)
+ @env[:ui].info("\n[Invade]: Validating #{config_key.upcase} part...") unless @quiet
- @env[:invade].delete('machines')
-
- @app.call(env)
+ validated_data = validate(config_key, config_key, config_data, config_data.depth)
+ @invade_vagrantfile[config_key] = generate(
+ part_type: config_key,
+ data: validated_data,
+ generator_type: Invade::Generator::Type::VAGRANT_PART
+ ) if @generate
end
def validate(part_name, value_name, value_data, depth)
@validator.depth = depth
@validator.validate(part_name, value_name, value_data)