package com.brightgenerous.cli;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.brightgenerous.cli.delegate.CliUtility;
import com.brightgenerous.commons.EqualsUtils;
import com.brightgenerous.commons.HashCodeUtils;
import com.brightgenerous.commons.ToStringUtils;
@SuppressWarnings("deprecation")
public class CliUtils implements Serializable {
private static final long serialVersionUID = 8875225634485364747L;
public static boolean resolved() {
return CliUtility.RESOLVED;
}
private final String cmdLineSyntax;
// must be java.io.Serializable
private final List<CliOption> options;
protected CliUtils(String cmdLineSyntax, List<CliOption> options) {
this.cmdLineSyntax = cmdLineSyntax;
if ((options == null) || options.isEmpty()) {
this.options = new ArrayList<>();
} else {
this.options = new ArrayList<>(options);
}
}
public static CliUtils get(String cmdLineSyntax, CliOption... options) {
return getInstance(cmdLineSyntax, Arrays.asList(options));
}
public static CliUtils get(String cmdLineSyntax, List<CliOption> options) {
return getInstance(cmdLineSyntax, options);
}
protected static CliUtils getInstance(String cmdLineSyntax, List<CliOption> options) {
return new CliUtils(cmdLineSyntax, options);
}
public ParseResult parse(String[] args) throws CliException {
return CliUtility.parse(options, args);
}
public String options(List<CliOption> options) {
return CliUtility.options(options);
}
public String help() {
return CliUtility.help(cmdLineSyntax, options);
}
public String usage() {
return CliUtility.usage(cmdLineSyntax, options);
}
@Override
public int hashCode() {
if (HashCodeUtils.resolved()) {
return HashCodeUtils.hashCodeAlt(null, this);
}
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
if (EqualsUtils.resolved()) {
return EqualsUtils.equalsAlt(null, this, obj);
}
return super.equals(obj);
}
@Override
public String toString() {
if (ToStringUtils.resolved()) {
return ToStringUtils.toStringAlt(this);
}
return super.toString();
}
}