1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.cling.invoker.mvnup;
20
21 import java.util.List;
22 import java.util.Optional;
23 import java.util.function.Consumer;
24
25 import org.apache.commons.cli.CommandLine;
26 import org.apache.commons.cli.Option;
27 import org.apache.commons.cli.ParseException;
28 import org.apache.maven.api.annotations.Nonnull;
29 import org.apache.maven.api.cli.Options;
30 import org.apache.maven.api.cli.ParserRequest;
31 import org.apache.maven.api.cli.mvnup.UpgradeOptions;
32 import org.apache.maven.cling.invoker.CommonsCliOptions;
33
34
35
36
37 public class CommonsCliUpgradeOptions extends CommonsCliOptions implements UpgradeOptions {
38 public static CommonsCliUpgradeOptions parse(String[] args) throws ParseException {
39 CLIManager cliManager = new CLIManager();
40 return new CommonsCliUpgradeOptions(Options.SOURCE_CLI, cliManager, cliManager.parse(args));
41 }
42
43 protected CommonsCliUpgradeOptions(String source, CLIManager cliManager, CommandLine commandLine) {
44 super(source, cliManager, commandLine);
45 }
46
47 @Override
48 @Nonnull
49 public Optional<List<String>> goals() {
50 if (!commandLine.getArgList().isEmpty()) {
51 return Optional.of(commandLine.getArgList());
52 }
53 return Optional.empty();
54 }
55
56 @Override
57 @Nonnull
58 public Optional<String> modelVersion() {
59 if (commandLine.hasOption(CLIManager.MODEL_VERSION)) {
60 return Optional.of(commandLine.getOptionValue(CLIManager.MODEL_VERSION));
61 }
62 return Optional.empty();
63 }
64
65 @Override
66 @Nonnull
67 public Optional<String> directory() {
68 if (commandLine.hasOption(CLIManager.DIRECTORY)) {
69 return Optional.of(commandLine.getOptionValue(CLIManager.DIRECTORY));
70 }
71 return Optional.empty();
72 }
73
74 @Override
75 @Nonnull
76 public Optional<Boolean> infer() {
77 if (commandLine.hasOption(CLIManager.INFER)) {
78 return Optional.of(Boolean.TRUE);
79 }
80 return Optional.empty();
81 }
82
83 @Override
84 @Nonnull
85 public Optional<Boolean> model() {
86 if (commandLine.hasOption(CLIManager.MODEL)) {
87 return Optional.of(Boolean.TRUE);
88 }
89 return Optional.empty();
90 }
91
92 @Override
93 @Nonnull
94 public Optional<Boolean> plugins() {
95 if (commandLine.hasOption(CLIManager.PLUGINS)) {
96 return Optional.of(Boolean.TRUE);
97 }
98 return Optional.empty();
99 }
100
101 @Override
102 @Nonnull
103 public Optional<Boolean> all() {
104 if (commandLine.hasOption(CLIManager.ALL)) {
105 return Optional.of(Boolean.TRUE);
106 }
107 return Optional.empty();
108 }
109
110 @Override
111 public void displayHelp(ParserRequest request, Consumer<String> printStream) {
112 super.displayHelp(request, printStream);
113 printStream.accept("");
114
115 printStream.accept("Goals:");
116 printStream.accept(" help - display this help message");
117 printStream.accept(" check - check for available upgrades");
118 printStream.accept(" apply - apply available upgrades");
119 printStream.accept("");
120 printStream.accept("Options:");
121 printStream.accept(" -m, --model-version <version> Target POM model version (4.0.0 or 4.1.0)");
122 printStream.accept(" -d, --directory <path> Directory to use as starting point for POM discovery");
123 printStream.accept(" -i, --infer Remove redundant information that can be inferred by Maven");
124 printStream.accept(" --model Fix Maven 4 compatibility issues in POM files");
125 printStream.accept(" --plugins Upgrade plugins known to fail with Maven 4");
126 printStream.accept(
127 " -a, --all Apply all upgrades (equivalent to --model-version 4.1.0 --infer --model --plugins)");
128 printStream.accept("");
129 printStream.accept("Default behavior: --model --plugins --infer are applied if no other options are specified");
130 printStream.accept("");
131 }
132
133 @Override
134 protected CommonsCliUpgradeOptions copy(
135 String source, CommonsCliOptions.CLIManager cliManager, CommandLine commandLine) {
136 return new CommonsCliUpgradeOptions(source, (CLIManager) cliManager, commandLine);
137 }
138
139 protected static class CLIManager extends CommonsCliOptions.CLIManager {
140 public static final String MODEL_VERSION = "m";
141 public static final String DIRECTORY = "d";
142 public static final String INFER = "i";
143 public static final String MODEL = "model";
144 public static final String PLUGINS = "plugins";
145 public static final String ALL = "a";
146
147 @Override
148 protected void prepareOptions(org.apache.commons.cli.Options options) {
149 super.prepareOptions(options);
150 options.addOption(Option.builder(MODEL_VERSION)
151 .longOpt("model-version")
152 .hasArg()
153 .argName("version")
154 .desc("Target POM model version (4.0.0 or 4.1.0)")
155 .get());
156 options.addOption(Option.builder(DIRECTORY)
157 .longOpt("directory")
158 .hasArg()
159 .argName("path")
160 .desc("Directory to use as starting point for POM discovery")
161 .get());
162 options.addOption(Option.builder(INFER)
163 .longOpt("infer")
164 .desc("Use inference when upgrading (remove redundant information)")
165 .get());
166 options.addOption(Option.builder(MODEL)
167 .longOpt("model")
168 .desc("Fix Maven 4 compatibility issues in POM files")
169 .get());
170 options.addOption(Option.builder(PLUGINS)
171 .longOpt("plugins")
172 .desc("Upgrade plugins known to fail with Maven 4 to their minimum compatible versions")
173 .get());
174 options.addOption(Option.builder(ALL)
175 .longOpt("all")
176 .desc("Apply all upgrades (equivalent to --model-version 4.1.0 --infer --model --plugins)")
177 .get());
178 }
179 }
180 }