aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/singlejar/options.cc
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-10-26 18:23:29 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-10-27 16:29:27 +0200
commitce714f8a1d93c540257d237144c88769251a0d62 (patch)
treed267e3d9a434308c4ebfd2daf7656ec958c27861 /src/tools/singlejar/options.cc
parentaca69a974ade777c54119dbe2c3a52aef61bc243 (diff)
Adjust the singlejar binary to accept an optional comma-separated "label" with
each entry in the --outputs flag. RELNOTES: n/a PiperOrigin-RevId: 173547248
Diffstat (limited to 'src/tools/singlejar/options.cc')
-rw-r--r--src/tools/singlejar/options.cc64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/tools/singlejar/options.cc b/src/tools/singlejar/options.cc
index 86c35fe142..7e5a077d3e 100644
--- a/src/tools/singlejar/options.cc
+++ b/src/tools/singlejar/options.cc
@@ -15,43 +15,55 @@
#include "src/tools/singlejar/options.h"
#include "src/tools/singlejar/diag.h"
-#include "src/tools/singlejar/token_stream.h"
void Options::ParseCommandLine(int argc, const char * const argv[]) {
ArgTokenStream tokens(argc, argv);
std::string optarg;
while (!tokens.AtEnd()) {
- if (tokens.MatchAndSet("--output", &output_jar) ||
- tokens.MatchAndSet("--main_class", &main_class) ||
- tokens.MatchAndSet("--java_launcher", &java_launcher) ||
- tokens.MatchAndSet("--deploy_manifest_lines", &manifest_lines) ||
- tokens.MatchAndSet("--sources", &input_jars) ||
- tokens.MatchAndSet("--resources", &resources) ||
- tokens.MatchAndSet("--classpath_resources", &classpath_resources) ||
- tokens.MatchAndSet("--include_prefixes", &include_prefixes) ||
- tokens.MatchAndSet("--exclude_build_data", &exclude_build_data) ||
- tokens.MatchAndSet("--compression", &force_compression) ||
- tokens.MatchAndSet("--dont_change_compression",
- &preserve_compression) ||
- tokens.MatchAndSet("--normalize", &normalize_timestamps) ||
- tokens.MatchAndSet("--no_duplicates", &no_duplicates) ||
- tokens.MatchAndSet("--verbose", &verbose) ||
- tokens.MatchAndSet("--warn_duplicate_resources",
- &warn_duplicate_resources) ||
- tokens.MatchAndSet("--nocompress_suffixes", &nocompress_suffixes) ||
- tokens.MatchAndSet("--check_desugar_deps", &check_desugar_deps)) {
- continue;
- } else if (tokens.MatchAndSet("--build_info_file", &optarg)) {
- build_info_files.push_back(optarg);
- continue;
- } else if (tokens.MatchAndSet("--extra_build_info", &optarg)) {
- build_info_lines.push_back(optarg);
+ if (ParseToken(&tokens)) {
continue;
} else {
diag_errx(1, "Bad command line argument %s", tokens.token().c_str());
}
}
+ PostValidateOptions();
+}
+
+bool Options::ParseToken(ArgTokenStream *tokens) {
+ std::string optarg;
+
+ if (tokens->MatchAndSet("--output", &output_jar) ||
+ tokens->MatchAndSet("--main_class", &main_class) ||
+ tokens->MatchAndSet("--java_launcher", &java_launcher) ||
+ tokens->MatchAndSet("--deploy_manifest_lines", &manifest_lines) ||
+ tokens->MatchAndSet("--sources", &input_jars) ||
+ tokens->MatchAndSet("--resources", &resources) ||
+ tokens->MatchAndSet("--classpath_resources", &classpath_resources) ||
+ tokens->MatchAndSet("--include_prefixes", &include_prefixes) ||
+ tokens->MatchAndSet("--exclude_build_data", &exclude_build_data) ||
+ tokens->MatchAndSet("--compression", &force_compression) ||
+ tokens->MatchAndSet("--dont_change_compression", &preserve_compression) ||
+ tokens->MatchAndSet("--normalize", &normalize_timestamps) ||
+ tokens->MatchAndSet("--no_duplicates", &no_duplicates) ||
+ tokens->MatchAndSet("--verbose", &verbose) ||
+ tokens->MatchAndSet("--warn_duplicate_resources",
+ &warn_duplicate_resources) ||
+ tokens->MatchAndSet("--nocompress_suffixes", &nocompress_suffixes) ||
+ tokens->MatchAndSet("--check_desugar_deps", &check_desugar_deps)) {
+ return true;
+ } else if (tokens->MatchAndSet("--build_info_file", &optarg)) {
+ build_info_files.push_back(optarg);
+ return true;
+ } else if (tokens->MatchAndSet("--extra_build_info", &optarg)) {
+ build_info_lines.push_back(optarg);
+ return true;
+ }
+
+ return false;
+}
+
+void Options::PostValidateOptions() {
if (output_jar.empty()) {
diag_errx(1, "Use --output <output_jar> to specify the output file name");
}