feat(build): Add disable_comments option (#1127)

This commit is contained in:
bouzuya
2022-11-08 11:08:19 -05:00
committed by GitHub
parent c9cadd4b23
commit e188521149
10 changed files with 151 additions and 6 deletions
+26 -3
View File
@@ -1,3 +1,5 @@
use std::collections::HashSet;
use super::{Attributes, Method, Service};
use crate::{generate_doc_comments, naive_snake_case};
use proc_macro2::TokenStream;
@@ -14,13 +16,19 @@ pub fn generate<T: Service>(
compile_well_known_types: bool,
build_transport: bool,
attributes: &Attributes,
disable_comments: &HashSet<String>,
) -> TokenStream {
let service_ident = quote::format_ident!("{}Client", service.name());
let client_mod = quote::format_ident!("{}_client", naive_snake_case(service.name()));
let methods = generate_methods(service, emit_package, proto_path, compile_well_known_types);
let methods = generate_methods(
service,
emit_package,
proto_path,
compile_well_known_types,
disable_comments,
);
let connect = generate_connect(&service_ident, build_transport);
let service_doc = generate_doc_comments(service.comment());
let package = if emit_package { service.package() } else { "" };
let path = format!(
@@ -30,6 +38,12 @@ pub fn generate<T: Service>(
service.identifier()
);
let service_doc = if disable_comments.contains(&path) {
TokenStream::new()
} else {
generate_doc_comments(service.comment())
};
let mod_attributes = attributes.for_mod(package);
let struct_attributes = attributes.for_struct(&path);
@@ -142,6 +156,7 @@ fn generate_methods<T: Service>(
emit_package: bool,
proto_path: &str,
compile_well_known_types: bool,
disable_comments: &HashSet<String>,
) -> TokenStream {
let mut stream = TokenStream::new();
let package = if emit_package { service.package() } else { "" };
@@ -155,7 +170,15 @@ fn generate_methods<T: Service>(
method.identifier()
);
stream.extend(generate_doc_comments(method.comment()));
if !disable_comments.contains(&format!(
"{}{}{}.{}",
package,
if package.is_empty() { "" } else { "." },
service.identifier(),
method.identifier()
)) {
stream.extend(generate_doc_comments(method.comment()));
}
let method = match (method.client_streaming(), method.server_streaming()) {
(false, false) => generate_unary(method, proto_path, compile_well_known_types, path),