mirror of
https://github.com/jlengrand/picocli.git
synced 2026-03-10 08:41:17 +00:00
[#1066] add Util::flattenHierarchy helper method for using ManPageGenerator as a subcommand
This commit is contained in:
@@ -7,9 +7,10 @@ import picocli.CommandLine.Model.CommandSpec;
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class Util {
|
||||
public final class Util {
|
||||
private Util() {}
|
||||
|
||||
public static List<CommandSpec> getCommandSpecs(String factoryClass, Class<?>[] classes) throws Exception {
|
||||
@@ -24,6 +25,19 @@ public class Util {
|
||||
return specs;
|
||||
}
|
||||
|
||||
public static List<CommandSpec> flattenHierarchy(CommandSpec root) {
|
||||
IdentityHashMap<CommandSpec, CommandSpec> result = new IdentityHashMap<CommandSpec, CommandSpec>();
|
||||
addRecursively(root, result);
|
||||
return new ArrayList<CommandSpec>(result.keySet());
|
||||
}
|
||||
|
||||
private static void addRecursively(CommandSpec command, IdentityHashMap<CommandSpec, CommandSpec> result) {
|
||||
result.put(command, command);
|
||||
for (CommandLine sub : command.subcommands().values()) {
|
||||
addRecursively(sub.getCommandSpec(), result);
|
||||
}
|
||||
}
|
||||
|
||||
public static void closeSilently(Closeable closeable) {
|
||||
if (closeable != null) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user