Fusion CLI
CLI modules enables you to write simple @Command beans reusing @RootConfiguration for their parameters.
Sample
@Command(name = "my-commands", description = "A super command.") (1)
public class MyCommand implements Runnable { (2)
private final Conf conf;
public MyCommand(final Conf conf) { (3)
this.conf = conf;
}
@Override
public void run() { (4)
// impl what you want
}
@RootConfiguration("my-commands") (5)
public record Conf(String name) {}
}
-
Mark a bean with
@Commandto make it a command. You can customize the command name (first command line value to call the command) and its description (usage/help on error), -
Ensure to make the command a
Runnable, - Ensure to have a constructor with the first parameter (required) being the configuration class (as in configuration ),
-
Implement your command in
runcallback, -
The configuration of the command is a standard one, you can customize the prefix thanks
@RootConfigurationannotation (so here all options will use--my-command-xxxxinstead of default--Conf-xxx).
|
TIP
|
if you don't want to set any prefix for the configuration, set the prefix in |
Injections
You can inject any simple type (classes, not lists) beans in your command through the constructor (> first parameter).
|
TIP
|
if you need to inject a list, you can always create a bean which holds the list and inject this wrapper in your command. |
Launching
fusion-cli provides an integration with Launcher main, if you don't use it, you will have to call yourself CLIAwaiter and register an instance of Args.