diff options
Diffstat (limited to 'src/main/java/com/google/devtools/common/options/Options.java')
-rw-r--r-- | src/main/java/com/google/devtools/common/options/Options.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/common/options/Options.java b/src/main/java/com/google/devtools/common/options/Options.java index c52e395ecf..b636c09532 100644 --- a/src/main/java/com/google/devtools/common/options/Options.java +++ b/src/main/java/com/google/devtools/common/options/Options.java @@ -14,6 +14,7 @@ package com.google.devtools.common.options; +import com.google.devtools.common.options.OptionsParser.ConstructionException; import java.util.Arrays; import java.util.List; @@ -56,6 +57,26 @@ public class Options<O extends OptionsBase> { } /** + * A convenience function for use in main methods. Parses the command line parameters, and exits + * upon error. Also, prints out the usage message if "--help" appears anywhere within {@code + * args}. + */ + public static <O extends OptionsBase> Options<O> parseAndExitUponError( + Class<O> optionsClass, boolean allowResidue, String... args) { + OptionsParser parser = null; + try { + parser = OptionsParser.newOptionsParser(optionsClass); + parser.setAllowResidue(allowResidue); + } catch (ConstructionException e) { + System.err.println("Error constructing the options parser: " + e.getMessage()); + System.exit(2); + } + parser.parseAndExitUponError(args); + List<String> remainingArgs = parser.getResidue(); + return new Options<>(parser.getOptions(optionsClass), remainingArgs.toArray(new String[0])); + } + + /** * Returns an options object at its default values. The returned object may * be freely modified by the caller, by assigning its fields. */ |