// 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 #include #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 manifest_lines; std::vector > input_jars; std::vector resources; std::vector classpath_resources; std::vector build_info_files; std::vector build_info_lines; std::vector include_prefixes; std::vector 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_