blob: 5de579e62e03db58ddf0cf6830c5d08324367c0e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*
* SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
*
* SPDX-License-Identifier: EPL-2.0
*/
package tools.refinery.generator.cli;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.ParameterException;
import com.google.inject.Inject;
import tools.refinery.generator.cli.commands.GenerateCommand;
import tools.refinery.generator.standalone.StandaloneRefinery;
import java.io.IOException;
public class RefineryCli {
private static final String GENERATE_COMMAND = "generate";
@Inject
private GenerateCommand generateCommand;
private JCommander jCommander;
public String parseArguments(String... args) {
var jc = getJCommander();
jc.parse(args);
return jc.getParsedCommand();
}
public void run(String command) throws IOException {
switch (command) {
case GENERATE_COMMAND -> generateCommand.run();
case null, default -> showUsageAndExit();
}
}
public void showUsageAndExit() {
getJCommander().usage();
System.exit(1);
}
private JCommander getJCommander() {
if (jCommander == null) {
jCommander = JCommander.newBuilder()
.programName("refinery")
.addObject(this)
.addCommand(GENERATE_COMMAND, generateCommand)
.build();
}
return jCommander;
}
public static void main(String[] args) throws IOException {
var cli = StandaloneRefinery.getInjector().getInstance(RefineryCli.class);
String command = null;
try {
command = cli.parseArguments(args);
} catch (ParameterException e) {
System.err.println(e.getMessage());
cli.showUsageAndExit();
}
cli.run(command);
}
}
|