41 import java.nio.file.Files; |
41 import java.nio.file.Files; |
42 import java.nio.file.Path; |
42 import java.nio.file.Path; |
43 import java.nio.file.Paths; |
43 import java.nio.file.Paths; |
44 import java.util.ArrayList; |
44 import java.util.ArrayList; |
45 import java.util.Arrays; |
45 import java.util.Arrays; |
46 import java.util.Collection; |
|
47 import java.util.Collections; |
|
48 import java.util.Comparator; |
46 import java.util.Comparator; |
49 import java.util.Date; |
47 import java.util.Date; |
50 import java.util.HashMap; |
48 import java.util.HashMap; |
51 import java.util.HashSet; |
49 import java.util.HashSet; |
52 import java.util.List; |
50 import java.util.List; |
229 new PrintWriter(System.err, true)); |
227 new PrintWriter(System.err, true)); |
230 } |
228 } |
231 try { |
229 try { |
232 List<String> remaining = optionsHelper.handleOptions(this, args); |
230 List<String> remaining = optionsHelper.handleOptions(this, args); |
233 if (remaining.size() > 0 && !options.suggestProviders) { |
231 if (remaining.size() > 0 && !options.suggestProviders) { |
234 throw taskHelper.newBadArgs("err.orphan.arguments", toString(remaining)) |
232 throw taskHelper.newBadArgs("err.orphan.arguments", |
|
233 remaining.stream().collect(Collectors.joining(" "))) |
235 .showUsage(true); |
234 .showUsage(true); |
236 } |
235 } |
237 if (options.help) { |
236 if (options.help) { |
238 optionsHelper.showHelp(PROGNAME); |
237 optionsHelper.showHelp(PROGNAME); |
239 return EXIT_OK; |
238 return EXIT_OK; |
657 |
656 |
658 private void suggestProviders(JlinkConfiguration config, List<String> args) |
657 private void suggestProviders(JlinkConfiguration config, List<String> args) |
659 throws BadArgs |
658 throws BadArgs |
660 { |
659 { |
661 if (args.size() > 1) { |
660 if (args.size() > 1) { |
662 throw taskHelper.newBadArgs("err.orphan.argument", |
661 List<String> arguments = args.get(0).startsWith("-") |
663 toString(args.subList(1, args.size()))) |
662 ? args |
664 .showUsage(true); |
663 : args.subList(1, args.size()); |
|
664 throw taskHelper.newBadArgs("err.invalid.arg.for.option", |
|
665 "--suggest-providers", |
|
666 arguments.stream().collect(Collectors.joining(" "))); |
665 } |
667 } |
666 |
668 |
667 if (options.bindServices) { |
669 if (options.bindServices) { |
668 log.println(taskHelper.getMessage("no.suggested.providers")); |
670 log.println(taskHelper.getMessage("no.suggested.providers")); |
669 return; |
671 return; |
712 .flatMap(mref -> mref.descriptor().provides().stream() |
714 .flatMap(mref -> mref.descriptor().provides().stream() |
713 .map(ModuleDescriptor.Provides::service)) |
715 .map(ModuleDescriptor.Provides::service)) |
714 .forEach(names::remove); |
716 .forEach(names::remove); |
715 if (!names.isEmpty()) { |
717 if (!names.isEmpty()) { |
716 log.println(taskHelper.getMessage("warn.provider.notfound", |
718 log.println(taskHelper.getMessage("warn.provider.notfound", |
717 toString(names))); |
719 names.stream().sorted().collect(Collectors.joining(",")))); |
718 } |
720 } |
719 |
721 |
720 String msg = String.format("%n%s:", taskHelper.getMessage("suggested.providers.header")); |
722 String msg = String.format("%n%s:", taskHelper.getMessage("suggested.providers.header")); |
721 printProviders(log, msg, mrefs, uses); |
723 printProviders(log, msg, mrefs, uses); |
722 } |
724 } |
723 } |
|
724 |
|
725 private static String toString(Collection<String> collection) { |
|
726 return collection.stream().sorted() |
|
727 .collect(Collectors.joining(",")); |
|
728 } |
725 } |
729 |
726 |
730 private String getSaveOpts() { |
727 private String getSaveOpts() { |
731 StringBuilder sb = new StringBuilder(); |
728 StringBuilder sb = new StringBuilder(); |
732 sb.append('#').append(new Date()).append("\n"); |
729 sb.append('#').append(new Date()).append("\n"); |