|  | // Copyright 2016 The Bazel Authors. All rights reserved. | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //    http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | #ifndef THIRD_PARTY_BAZEL_SRC_TOOLS_SINGLEJAR_OPTIONS_H_ | 
|  | #define THIRD_PARTY_BAZEL_SRC_TOOLS_SINGLEJAR_OPTIONS_H_ | 
|  |  | 
|  | #include <string> | 
|  | #include <vector> | 
|  | #include "src/tools/singlejar/token_stream.h" | 
|  |  | 
|  | /* Command line options. */ | 
|  | class Options { | 
|  | public: | 
|  | Options() | 
|  | : exclude_build_data(false), | 
|  | force_compression(false), | 
|  | normalize_timestamps(false), | 
|  | no_duplicates(false), | 
|  | no_duplicate_classes(false), | 
|  | preserve_compression(false), | 
|  | verbose(false), | 
|  | warn_duplicate_resources(false), | 
|  | check_desugar_deps(false) {} | 
|  |  | 
|  | virtual ~Options() {} | 
|  |  | 
|  | // Parses command line arguments into the fields of this instance. | 
|  | void ParseCommandLine(int argc, const char *const argv[]); | 
|  |  | 
|  | std::string output_jar; | 
|  | std::string main_class; | 
|  | std::string java_launcher; | 
|  | std::vector<std::string> manifest_lines; | 
|  | std::vector<std::pair<std::string, std::string> > input_jars; | 
|  | std::vector<std::string> resources; | 
|  | std::vector<std::string> classpath_resources; | 
|  | std::vector<std::string> build_info_files; | 
|  | std::vector<std::string> build_info_lines; | 
|  | std::vector<std::string> include_prefixes; | 
|  | std::vector<std::string> nocompress_suffixes; | 
|  | bool exclude_build_data; | 
|  | bool force_compression; | 
|  | bool normalize_timestamps; | 
|  | bool no_duplicates; | 
|  | bool no_duplicate_classes; | 
|  | bool preserve_compression; | 
|  | bool verbose; | 
|  | bool warn_duplicate_resources; | 
|  | bool check_desugar_deps; | 
|  |  | 
|  | protected: | 
|  | /* | 
|  | * Given the token stream, consume one notional flag from the input stream and | 
|  | * return true if the flag was recognized and fully consumed. This notional | 
|  | * flag may result in many tokens being consumed, as flags like --inputs ends | 
|  | * up consuming many future tokens: --inputs a b c d e --some_other_flag | 
|  | */ | 
|  | virtual bool ParseToken(ArgTokenStream *tokens); | 
|  |  | 
|  | /* | 
|  | * After all of the command line options are consumed, validate that the | 
|  | * options make sense. This function will exit(1) if invalid combinations of | 
|  | * flags are passed (e.g.: is missing --output_jar) | 
|  | */ | 
|  | virtual void PostValidateOptions(); | 
|  | }; | 
|  |  | 
|  | #endif  // THIRD_PARTY_BAZEL_SRC_TOOLS_SINGLEJAR_OPTIONS_H_ |