![JAR search and dependency download from the Maven repository](/logo.png)
io.airlift.command.UsageHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of airline Show documentation
Show all versions of airline Show documentation
Airline is a Java annotation-based framework for parsing Git like command line structures.
The newest version!
package io.airlift.command;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import io.airlift.command.model.ArgumentsMetadata;
import io.airlift.command.model.CommandMetadata;
import io.airlift.command.model.OptionMetadata;
import javax.annotation.Nullable;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static io.airlift.command.model.OptionMetadata.isHiddenPredicate;
public class UsageHelper
{
public static final Comparator DEFAULT_OPTION_COMPARATOR = new Comparator()
{
@Override
public int compare(OptionMetadata o1, OptionMetadata o2)
{
String option1 = o1.getOptions().iterator().next();
option1 = option1.replaceFirst("^-+", "");
String option2 = o2.getOptions().iterator().next();
option2 = option2.replaceFirst("^-+", "");
return ComparisonChain.start()
.compare(option1.toLowerCase(), option2.toLowerCase())
.compare(option2, option1) // print lower case letters before upper case
.compare(System.identityHashCode(o1), System.identityHashCode(o2))
.result();
}
};
public static final Comparator DEFAULT_COMMAND_COMPARATOR = new Comparator()
{
@Override
public int compare(CommandMetadata o1, CommandMetadata o2)
{
return ComparisonChain.start()
.compare(o1.getName().toLowerCase(), o2.getName().toLowerCase())
.compare(o2.getName(), o1.getName()) // print lower case letters before upper case
.compare(System.identityHashCode(o1), System.identityHashCode(o2))
.result();
}
};
public static String toDescription(OptionMetadata option)
{
Set options = option.getOptions();
StringBuilder stringBuilder = new StringBuilder();
final String argumentString;
if (option.getArity() > 0) {
argumentString = Joiner.on(" ").join(Lists.transform(ImmutableList.of(option.getTitle()), new Function()
{
public String apply(@Nullable String argument)
{
return "<" + argument + ">";
}
}));
} else {
argumentString = null;
}
Joiner.on(", ").appendTo(stringBuilder, transform(options, new Function()
{
public String apply(@Nullable String option)
{
if (argumentString != null) {
return option + " " + argumentString;
}
return option;
}
}));
return stringBuilder.toString();
}
public static String toDescription(ArgumentsMetadata arguments)
{
if (!arguments.getUsage().isEmpty()) {
return arguments.getUsage();
}
return "<" + arguments.getTitle() + ">";
}
public static String toUsage(OptionMetadata option)
{
Set options = option.getOptions();
boolean required = option.isRequired();
StringBuilder stringBuilder = new StringBuilder();
if (!required) {
stringBuilder.append('[');
}
if (options.size() > 1) {
stringBuilder.append('(');
}
final String argumentString;
if (option.getArity() > 0) {
argumentString = Joiner.on(" ").join(transform(ImmutableList.of(option.getTitle()), new Function()
{
public String apply(@Nullable String argument)
{
return "<" + argument + ">";
}
}));
}
else {
argumentString = null;
}
Joiner.on(" | ").appendTo(stringBuilder, transform(options, new Function()
{
public String apply(@Nullable String option)
{
if (argumentString != null) {
return option + " " + argumentString;
}
else {
return option;
}
}
}));
if (options.size() > 1) {
stringBuilder.append(')');
}
if (option.isMultiValued()) {
stringBuilder.append("...");
}
if (!required) {
stringBuilder.append(']');
}
return stringBuilder.toString();
}
public static String toUsage(ArgumentsMetadata arguments)
{
if (!arguments.getUsage().isEmpty()) {
return arguments.getUsage();
}
boolean required = arguments.isRequired();
StringBuilder stringBuilder = new StringBuilder();
if (!required) {
stringBuilder.append('[');
}
stringBuilder.append("<").append(arguments.getTitle()).append(">");
if (arguments.isMultiValued()) {
stringBuilder.append("...");
}
if (!required) {
stringBuilder.append(']');
}
return stringBuilder.toString();
}
public static List toSynopsisUsage(List options)
{
return ImmutableList.copyOf(transform(filter(options, isHiddenPredicate()), new Function()
{
public String apply(OptionMetadata option)
{
if (option.isHidden())
{
return "";
}
return toUsage(option);
}
}));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy