diff options
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.java | 64 |
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 | */ | ||
6 | package tools.refinery.generator.cli; | ||
7 | |||
8 | import com.beust.jcommander.JCommander; | ||
9 | import com.beust.jcommander.ParameterException; | ||
10 | import com.google.inject.Inject; | ||
11 | import tools.refinery.generator.cli.commands.GenerateCommand; | ||
12 | import tools.refinery.generator.standalone.StandaloneRefinery; | ||
13 | |||
14 | import java.io.IOException; | ||
15 | |||
16 | public 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 | } | ||