1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.cli.example;
18
19 import java.util.ArrayList;
20 import java.util.Arrays;
21 import java.util.List;
22 import java.util.function.Function;
23
24 import org.apache.commons.cli.Option;
25 import org.apache.commons.cli.help.TableDefinition;
26 import org.apache.commons.cli.help.TextStyle;
27 import org.apache.commons.lang3.StringUtils;
28
29 public class WeirdOptionFormat implements Function<Iterable<Option>, TableDefinition> {
30 private final String[] headers = { "Opt", "Since", "Required", "LongOpt", "Deprecated", "Arg Name", "Type", "Description" };
31
32 private final List<TextStyle> styles;
33
34 public WeirdOptionFormat() {
35 styles = new ArrayList<>();
36 final TextStyle.Builder builder = TextStyle.builder();
37 styles.add(builder.setLeftPad(1).setIndent(3).get());
38 styles.add(builder.setLeftPad(5).get());
39 styles.add(builder.get());
40 styles.add(builder.get());
41 styles.add(builder.get());
42 styles.add(builder.get());
43 styles.add(builder.get());
44 styles.add(builder.get());
45 }
46
47 @Override
48 public TableDefinition apply(final Iterable<Option> options) {
49 final List<List<String>> rows = new ArrayList<>();
50 for (final Option option : options) {
51 final List<String> row = new ArrayList<>();
52 row.add(option.getOpt());
53 row.add(StringUtils.defaultIfEmpty(option.getSince(), "--"));
54 row.add(option.isRequired() ? "T" : "F");
55 row.add(option.getLongOpt());
56 row.add(option.isDeprecated() ? "T" : "F");
57 row.add(option.hasArg() ? option.getArgName() : "--");
58 row.add(option.getType() == null ? "--" : option.getValue().toString());
59 row.add(option.getDescription());
60 rows.add(row);
61 }
62 return TableDefinition.from("", styles, Arrays.asList(headers), rows);
63 }
64 }