use of com.lexicalscope.jewel.cli.HelpMessage in project jewelcli by lexicalscope.
the class JewelCliReportMojo method executeReport.
@Override
protected void executeReport(final Locale locale) throws MavenReportException {
final ClassLoader classLoader = getClassLoader();
final Class<?> interfaceClass = interfaceClass(classLoader);
final Cli<?> cli = CliFactory.createCli(interfaceClass);
getLog().debug("cli interface with " + cli);
final Sink sink = getSink();
sink.head();
sink.title();
sink.text(getName(locale));
sink.title_();
sink.head_();
sink.body();
sink.section1();
sink.sectionTitle1();
sink.text(getBundle(locale).getString("report.jewelcli.title") + " " + getProject().getName());
sink.sectionTitle1_();
sink.lineBreak();
sink.text("Command line interface for " + " " + getProject().getName());
sink.lineBreak();
sink.lineBreak();
cli.describeTo(new HelpMessage() {
@Override
public void startOfOptions() {
sink.table();
sink.tableRow();
sink.tableHeaderCell();
sink.text("Mandatory");
sink.tableHeaderCell_();
sink.tableHeaderCell();
sink.text("Long Form");
sink.tableHeaderCell_();
sink.tableHeaderCell();
sink.text("Short Form");
sink.tableHeaderCell_();
sink.tableHeaderCell();
sink.text("Pattern");
sink.tableHeaderCell_();
sink.tableHeaderCell();
sink.text("Description");
sink.tableHeaderCell_();
sink.tableRow_();
}
@Override
public OptionHelpMessage option() {
return new OptionHelpMessage() {
@Override
public void startOptionalOption() {
sink.tableRow();
sink.tableCell("true");
}
@Override
public void startMandatoryOption() {
sink.tableRow();
sink.tableCell();
sink.text("true");
sink.tableCell_();
}
@Override
public void singleValuedWithCustomPattern(final String pattern) {
sink.tableCell();
sink.text("/" + pattern + "/");
sink.tableCell_();
}
@Override
public void singleValued() {
sink.tableCell();
sink.text("/.*/");
sink.tableCell_();
}
@Override
public void noValued() {
sink.tableCell();
sink.tableCell_();
}
@Override
public void shortName(final List<String> shortNames) {
sink.tableCell();
sink.text(join(convert(shortNames, new AddDash()), ", "));
sink.tableCell_();
}
@Override
public void multiValuedWithCustomPattern() {
sink.tableCell();
sink.text("/.*/...");
sink.tableCell_();
}
@Override
public void multiValuedWithCustomPattern(final String pattern) {
sink.tableCell();
sink.text("/" + pattern + "/...");
sink.tableCell_();
}
@Override
public void longName(final List<String> longNames) {
sink.tableCell();
sink.text(join(convert(longNames, new AddDashDash()), ", "));
sink.tableCell_();
}
@Override
public void endOptionalOption(final String description) {
sink.tableCell();
sink.text(description);
sink.tableCell_();
sink.tableRow_();
}
@Override
public void endOptionalOption() {
sink.tableCell();
sink.tableCell_();
sink.tableRow_();
}
@Override
public void endMandatoryOption(final String description) {
sink.tableCell();
sink.text(description);
sink.tableCell_();
sink.tableRow_();
}
@Override
public void endMandatoryOption() {
sink.tableCell();
sink.tableCell_();
sink.tableRow_();
}
};
}
@Override
public void noUsageInformation() {
// nothing
}
@Override
public void hasUsageInformation() {
sink.text("Usage: ");
}
@Override
public void hasUsageInformation(final String applicationName) {
sink.text("Usage: " + applicationName + " ");
}
@Override
public void hasUnparsedOption(final String valueName) {
sink.text(valueName);
}
@Override
public void hasUnparsedMultiValuedOption(final String valueName) {
sink.text(valueName + "...");
}
@Override
public void hasSomeMandatoryOptions() {
sink.text("options ");
}
@Override
public void hasOnlyOptionalOptions() {
sink.text("[options] ");
}
@Override
public void endOfOptions() {
sink.table_();
}
});
sink.lineBreak();
sink.section1_();
sink.body_();
sink.flush();
sink.close();
}
Aggregations