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