| // Protocol Buffers - Google's data interchange format |
| // Copyright 2008 Google Inc. All rights reserved. |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| |
| #ifdef _WIN32 |
| #include <fcntl.h> |
| #else |
| #include <unistd.h> |
| #endif |
| |
| #include "google/protobuf/descriptor.pb.h" |
| #include "absl/log/absl_check.h" |
| #include "absl/strings/escaping.h" |
| #include "google/protobuf/compiler/plugin.pb.h" |
| #include "google/protobuf/io/io_win32.h" |
| |
| using google::protobuf::compiler::CodeGeneratorRequest; |
| using google::protobuf::compiler::CodeGeneratorResponse; |
| |
| // This fake protoc plugin does nothing but write out the CodeGeneratorRequest |
| // in base64. This is not very useful except that it gives us a way to make |
| // assertions in tests about the contents of requests that protoc sends to |
| // plugins. |
| int main(int argc, char* argv[]) { |
| |
| #ifdef _WIN32 |
| google::protobuf::io::win32::setmode(STDIN_FILENO, _O_BINARY); |
| google::protobuf::io::win32::setmode(STDOUT_FILENO, _O_BINARY); |
| #endif |
| |
| CodeGeneratorRequest request; |
| ABSL_CHECK(request.ParseFromFileDescriptor(STDIN_FILENO)); |
| ABSL_CHECK(!request.file_to_generate().empty()); |
| CodeGeneratorResponse response; |
| response.set_supported_features( |
| CodeGeneratorResponse::FEATURE_SUPPORTS_EDITIONS); |
| response.set_minimum_edition(google::protobuf::Edition::EDITION_PROTO2); |
| response.set_maximum_edition(google::protobuf::Edition::EDITION_MAX); |
| response.add_file()->set_name( |
| absl::StrCat(request.file_to_generate(0), ".request")); |
| response.mutable_file(0)->set_content( |
| absl::Base64Escape(request.SerializeAsString())); |
| ABSL_CHECK(response.SerializeToFileDescriptor(STDOUT_FILENO)); |
| return 0; |
| } |