1 /*
2 * SPDX-FileCopyrightText: none
3 * SPDX-License-Identifier: CC0-1.0
4 */
5
6 package gov.nist.secauto.metaschema.cli.processor;
7
8 import edu.umd.cs.findbugs.annotations.NonNull;
9 import edu.umd.cs.findbugs.annotations.Nullable;
10
11 /**
12 * Implementations provide details around the result of processing a set of
13 * command line arguments.
14 */
15 public interface ExitStatus {
16 /**
17 * Get the exit code information associated with this exit status.
18 *
19 * @return the exit code information
20 */
21 @NonNull
22 ExitCode getExitCode();
23
24 /**
25 * Get a throwable that is associated with this exit status.
26 *
27 * @return the throwable or {@code null} if no throwable is associated
28 */
29 @Nullable
30 Throwable getThrowable();
31
32 /**
33 * Process the exit status.
34 *
35 * @param showStackTrace
36 * include the stack trace for the throwable, if associated
37 * @see #withThrowable(Throwable)
38 */
39 void generateMessage(boolean showStackTrace);
40
41 /**
42 * Get the associated message, or {@code null} if there is no message.
43 *
44 * @return the message or {@code null}
45 */
46 @Nullable
47 String getMessage();
48
49 /**
50 * Associate a throwable with the exit status.
51 *
52 * @param throwable
53 * the throwable
54 * @return this exit status
55 */
56 @NonNull
57 ExitStatus withThrowable(@NonNull Throwable throwable);
58 }