Skip to content

Commit

Permalink
fix #69 - use AsciiTable to print options
Browse files Browse the repository at this point in the history
Signed-off-by: Sebastian Hoß <mail@shoss.de>
  • Loading branch information
sebhoss committed May 6, 2017
1 parent 822c778 commit f07f590
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 4 deletions.
4 changes: 4 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@
<classpathentry kind="lib" path="bazel-genfiles/external/org_postgresql_postgresql/jar/_ijar/jar/external/org_postgresql_postgresql/jar/postgresql-42.0.0-ijar.jar"/>
<classpathentry kind="lib" path="bazel-genfiles/external/mysql_mysql_connector_java/jar/_ijar/jar/external/mysql_mysql_connector_java/jar/mysql-connector-java-6.0.6-ijar.jar"/>
<classpathentry kind="lib" path="bazel-genfiles/external/org_reactivestreams_reactive_streams/jar/_ijar/jar/external/org_reactivestreams_reactive_streams/jar/reactive-streams-1.0.0.final-ijar.jar"/>
<classpathentry kind="lib" path="bazel-genfiles/external/de_vandermeer_asciitable/jar/_ijar/jar/external/de_vandermeer_asciitable/jar/asciitable-0.3.2-ijar.jar"/>
<classpathentry kind="lib" path="bazel-genfiles/external/de_vandermeer_skb_interfaces/jar/_ijar/jar/external/de_vandermeer_skb_interfaces/jar/skb-interfaces-0.0.2-ijar.jar"/>
<classpathentry kind="lib" path="bazel-genfiles/external/org_apache_commons_commons_lang3/jar/_ijar/jar/external/org_apache_commons_commons_lang3/jar/commons-lang3-3.5-ijar.jar"/>
<classpathentry kind="lib" path="bazel-genfiles/external/de_vandermeer_ascii_utf_themes/jar/_ijar/jar/external/de_vandermeer_ascii_utf_themes/jar/ascii-utf-themes-0.0.1-ijar.jar"/>
<classpathentry kind="src" path="bazel-out/ide/generated">
<attributes>
<attribute name="ignore_optional_problems" value="true"/>
Expand Down
43 changes: 43 additions & 0 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -255,3 +255,46 @@ bind(
name = "mysql",
actual = "@mysql_mysql_connector_java//jar",
)


maven_jar(
name = "de_vandermeer_asciitable",
artifact = "de.vandermeer:asciitable:0.3.2",
)
bind(
name = "asciitable",
actual = "@de_vandermeer_asciitable//jar",
)
maven_jar(
name = "de_vandermeer_skb_interfaces",
artifact = "de.vandermeer:skb-interfaces:0.0.2",
)
bind(
name = "skb_interfaces",
actual = "@de_vandermeer_skb_interfaces//jar",
)
maven_jar(
name = "de_vandermeer_ascii_utf_themes",
artifact = "de.vandermeer:ascii-utf-themes:0.0.1",
)
bind(
name = "ascii_utf_themes",
actual = "@de_vandermeer_ascii_utf_themes//jar",
)
maven_jar(
name = "org_apache_commons_commons_lang3",
artifact = "org.apache.commons:commons-lang3:3.5",
)
bind(
name = "commons_lang3",
actual = "@org_apache_commons_commons_lang3//jar",
)
maven_jar(
name = "org_antlr_st4",
artifact = "org.antlr:ST4:4.0.8",
)
bind(
name = "st4",
actual = "@org_antlr_st4//jar",
)

7 changes: 6 additions & 1 deletion yosql-cli/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@ java_binary(
srcs = [":yosql-cli-raw-sources"],
visibility = ["//visibility:public"],
deps = [
"//yosql-core",
"//external:jopt_simple",
"//external:asciitable",
"//external:ascii_utf_themes",
"//external:skb_interfaces",
"//external:commons_lang3",
"//external:st4",
"//yosql-core",
],
resources = [
":cli-events",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import de.xn__ho_hia.yosql.model.ExecutionErrors;
import de.xn__ho_hia.yosql.model.LoggingAPI;
import de.xn__ho_hia.yosql.model.ResultRowConverter;
import joptsimple.BuiltinHelpFormatter;
import joptsimple.OptionException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
Expand Down Expand Up @@ -59,7 +58,8 @@ ExecutionConfiguration provideExecutionConfiguration(
final ValueConverter<ResultRowConverter> converterConverter,
final IMessageConveyor messages) {
final OptionParser parser = new OptionParser();
parser.formatHelpWith(new BuiltinHelpFormatter(250, 10));
// parser.formatHelpWith(new BuiltinHelpFormatter(250, 10));
parser.formatHelpWith(new YoSqlHelpFormatter());
final String helpCommandName = messages.getMessage(HELP);
parser.accepts(helpCommandName).forHelp();
final Path currentDirectory = Paths.get(messages.getMessage(CURRENT_DIRECTORY));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package de.xn__ho_hia.yosql.cli;

import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.stream.Collectors;

import de.vandermeer.asciitable.AsciiTable;
import de.vandermeer.asciitable.CWC_LongestWordMin;
import de.vandermeer.asciithemes.TA_GridThemes;
import de.vandermeer.skb.interfaces.transformers.textformat.TextAlignment;
import joptsimple.HelpFormatter;
import joptsimple.OptionDescriptor;

class YoSqlHelpFormatter implements HelpFormatter {

@Override
@SuppressWarnings("nls")
public String format(final Map<String, ? extends OptionDescriptor> options) {
final AsciiTable at = new AsciiTable();
at.setTextAlignment(TextAlignment.JUSTIFIED_LEFT);
at.getRenderer().setCWC(new CWC_LongestWordMin(new int[] { 30, 70, 20 }));
at.getContext().setGridTheme(TA_GridThemes.FULL);

at.addRule();
at.addRow("NAME", "DESCRIPTION", "DEFAULTS");
for (final Entry<String, ? extends OptionDescriptor> entry : options.entrySet()) {
final String parameterName = entry.getKey();
if (!parameterName.contains("arguments") && !"help".equalsIgnoreCase(parameterName)) {
at.addRule();
final OptionDescriptor value = entry.getValue();
at.addRow(parameterName, value.argumentDescription(), value.defaultValues().stream()
.filter(Objects::nonNull)
.map(Object::toString)
.filter(string -> !"\u0000".equals(string))
.collect(Collectors.joining(", ")));
}
}
at.addRule();

return at.render() + "\n";
}

}
2 changes: 1 addition & 1 deletion yosql-cli/src/main/resources/cli-events_en.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
PROBLEM_DURING_OPTION_PARSING=Error while parsing one of the specified options!\n\n\t{0}\n\nMaybe you meant {1}? If not, here are all possible values we currently allow:\n
PROBLEM_DURING_OPTION_PARSING=Error while parsing one of the specified options!\n\n\t{0}\n\nMaybe you meant {1}?\n\nHere are all possible values we currently allow:\n

0 comments on commit f07f590

Please sign in to comment.