lib/pdk/validate/base_validator.rb in pdk-1.5.0 vs lib/pdk/validate/base_validator.rb in pdk-1.6.0
- old
+ new
@@ -113,34 +113,51 @@
# If invoking :per_target, split the targets array into an array of
# single element arrays (one per target). If invoking :once, wrap the
# targets array in another array. This is so we can loop through the
# invokes with the same logic, regardless of which invoke style is
# needed.
- targets = (self::INVOKE_STYLE == :per_target) ? targets.combination(1).to_a : Array[targets]
+ #
+ if self::INVOKE_STYLE == :per_target
+ targets = targets.combination(1).to_a
+ else
+ targets = targets.each_slice(1000).to_a
+ options[:split_exec] = PDK::CLI::ExecGroup.new(spinner_text(targets), parallel: false)
+ end
+
exit_codes = []
targets.each do |invokation_targets|
cmd_argv = parse_options(options, invokation_targets).unshift(cmd_path)
cmd_argv.unshift(File.join(PDK::Util::RubyVersion.bin_path, 'ruby.exe'), '-W0') if Gem.win_platform?
command = PDK::CLI::Exec::Command.new(*cmd_argv).tap do |c|
c.context = :module
- exec_group = options[:exec_group]
- if exec_group
- sub_spinner = exec_group.add_spinner(spinner_text(invokation_targets))
- c.register_spinner(sub_spinner)
- else
- c.add_spinner(spinner_text(invokation_targets))
+ unless options[:split_exec]
+ exec_group = options[:exec_group]
+ if exec_group
+ sub_spinner = exec_group.add_spinner(spinner_text(invokation_targets))
+ c.register_spinner(sub_spinner)
+ else
+ c.add_spinner(spinner_text(invokation_targets))
+ end
end
end
- result = command.execute!
- exit_codes << result[:exit_code]
+ if options[:split_exec]
+ options[:split_exec].register do
+ result = command.execute!
+ parse_output(report, result, invokation_targets)
+ result[:exit_code]
+ end
+ else
+ result = command.execute!
+ exit_codes << result[:exit_code]
- parse_output(report, result, invokation_targets)
+ parse_output(report, result, invokation_targets)
+ end
end
- exit_codes.max
+ options.key?(:split_exec) ? options[:split_exec].exit_code : exit_codes.max
end
end
end
end