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