Search in sources :

Example 1 with HelpMessage

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();
}
Also used : Sink(org.apache.maven.doxia.sink.Sink) OptionHelpMessage(com.lexicalscope.jewel.cli.OptionHelpMessage) HelpMessage(com.lexicalscope.jewel.cli.HelpMessage) OptionHelpMessage(com.lexicalscope.jewel.cli.OptionHelpMessage) URLClassLoader(java.net.URLClassLoader)

Aggregations

HelpMessage (com.lexicalscope.jewel.cli.HelpMessage)1 OptionHelpMessage (com.lexicalscope.jewel.cli.OptionHelpMessage)1 URLClassLoader (java.net.URLClassLoader)1 Sink (org.apache.maven.doxia.sink.Sink)1