grpc-tools: add grpc_js grpc_out param

This is a minor change to use the pure JavaScript gRPC Client `@grpc/grpc-js`
instead of the (now deprecated `grpc` node package).
This commit is contained in:
Richard Willis 2020-04-22 19:25:16 +01:00
parent 03fdeedc78
commit f7deff3d82
3 changed files with 10 additions and 4 deletions

View File

@ -212,7 +212,8 @@ void PrintService(const ServiceDescriptor* service, Printer* out,
void PrintImports(const FileDescriptor* file, Printer* out,
const Parameters& params) {
if (!params.generate_package_definition) {
out->Print("var grpc = require('grpc');\n");
grpc::string package = params.grpc_js ? "@grpc/grpc-js" : "grpc";
out->Print("var grpc = require('$package$');\n", "package", package);
}
if (file->message_type_count() > 0) {
grpc::string file_path =

View File

@ -26,6 +26,8 @@ namespace grpc_node_generator {
struct Parameters {
// Generate a package definition object instead of Client classes
bool generate_package_definition;
// Use pure JavaScript gRPC Client
bool grpc_js;
};
grpc::string GenerateFile(const grpc::protobuf::FileDescriptor* file,

View File

@ -38,13 +38,16 @@ class NodeGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
grpc::string* error) const {
grpc_node_generator::Parameters generator_parameters;
generator_parameters.generate_package_definition = false;
generator_parameters.grpc_js = false;
if (!parameter.empty()) {
std::vector<grpc::string> parameters_list =
grpc_generator::tokenize(parameter, ",");
for (auto parameter_string = parameters_list.begin();
std::vector<grpc::string> parameters_list =
grpc_generator::tokenize(parameter, ",");
for (auto parameter_string = parameters_list.begin();
parameter_string != parameters_list.end(); parameter_string++) {
if (*parameter_string == "generate_package_definition") {
generator_parameters.generate_package_definition = true;
} else if (*parameter_string == "grpc_js") {
generator_parameters.grpc_js = true;
}
}
}