For the latest stable version, please use Spring Shell 3.4.0! |
Exit Code Mappings
Default behaviour of an exit codes is as:
-
Errors from a command option parsing will result code of
2
-
Any generic error will result result code of
1
-
Obviously in any other case result code is
0
Every CommandRegistration
can define its own mappings between Exception and exit code.
Essentially we’re bound to functionality in Spring Boot
regarding exit code and simply
integrate into that.
Assuming there is an exception show below which would be thrown from a command:
static class MyException extends RuntimeException {
private final int code;
MyException(String msg, int code) {
super(msg);
this.code = code;
}
public int getCode() {
return code;
}
}
It is possible to define a mapping function between Throwable
and exit code. You can also
just configure a class to exit code which is just a syntactic sugar within configurations.
CommandRegistration.builder()
.withExitCode()
.map(MyException.class, 3)
.map(t -> {
if (t instanceof MyException) {
return ((MyException) t).getCode();
}
return 0;
})
.and()
.build();
Exit codes cannot be customized with annotation based configuration |