diff --git a/gapic-generator-cloud/lib/gapic/generators/cloud_generator_parameters.rb b/gapic-generator-cloud/lib/gapic/generators/cloud_generator_parameters.rb index dd5b4ed02..3afb6c5aa 100644 --- a/gapic-generator-cloud/lib/gapic/generators/cloud_generator_parameters.rb +++ b/gapic-generator-cloud/lib/gapic/generators/cloud_generator_parameters.rb @@ -21,6 +21,7 @@ module Generators # Contains the cloud generator's parameters module CloudGeneratorParameters BOOL_PARAMETERS_ALIASES = { + "ruby-cloud-format" => ":format", "ruby-cloud-free-tier" => ":gem.:free_tier", "ruby-cloud-yard-strict" => ":gem.:yard_strict", "ruby-cloud-generic-endpoint" => ":gem.:generic_endpoint", diff --git a/gapic-generator-cloud/test/gapic/schema/cloud_api_test.rb b/gapic-generator-cloud/test/gapic/schema/cloud_api_test.rb index b599d16d7..788a725b7 100644 --- a/gapic-generator-cloud/test/gapic/schema/cloud_api_test.rb +++ b/gapic-generator-cloud/test/gapic/schema/cloud_api_test.rb @@ -37,6 +37,7 @@ def test_parse_parameters_readable ["ruby-cloud-is-cloud-product", API_INFO[:is_cloud_product].to_s], ["ruby-cloud-generate-metadata", API_INFO[:generate_metadata].to_s], ["ruby-cloud-rest-numeric-enums", API_INFO[:rest_numeric_enums].to_s], + ["ruby-cloud-format", API_INFO[:format].to_s], ["ruby-cloud-gem-name", API_INFO[:name]], ["ruby-cloud-gem-namespace", API_INFO[:namespace]], diff --git a/gapic-generator/lib/gapic/generators/base_generator.rb b/gapic-generator/lib/gapic/generators/base_generator.rb index 064d113fa..90634ca87 100644 --- a/gapic-generator/lib/gapic/generators/base_generator.rb +++ b/gapic-generator/lib/gapic/generators/base_generator.rb @@ -74,6 +74,7 @@ def generate_file template, filename, **args alias_method :g, :generate_file def format_files files + return files unless @api.format? FileFormatter.new(format_config, files).files end diff --git a/gapic-generator/lib/gapic/generators/default_generator_parameters.rb b/gapic-generator/lib/gapic/generators/default_generator_parameters.rb index 3c3bbdaa5..34f530663 100644 --- a/gapic-generator/lib/gapic/generators/default_generator_parameters.rb +++ b/gapic-generator/lib/gapic/generators/default_generator_parameters.rb @@ -21,6 +21,7 @@ module Generators # Contains the default generator's parameters module DefaultGeneratorParameters BOOL_PARAMETERS = [ + ":format", ":gem.:free_tier", ":gem.:yard_strict", ":gem.:generic_endpoint", diff --git a/gapic-generator/lib/gapic/schema/api.rb b/gapic-generator/lib/gapic/schema/api.rb index 6c500d14b..d9649934d 100644 --- a/gapic-generator/lib/gapic/schema/api.rb +++ b/gapic-generator/lib/gapic/schema/api.rb @@ -289,6 +289,12 @@ def generate_yardoc_snippets? configuration.fetch :generate_yardoc_snippets, true end + # Whether to format generated files + # @return [Boolean] + def format? + configuration.fetch :format, true + end + # Whether to generate gapic metadata (drift manifest) file # @return [Boolean] def generate_metadata diff --git a/gapic-generator/test/gapic/schema/api_test.rb b/gapic-generator/test/gapic/schema/api_test.rb index 1a156b8fb..58cf5692d 100644 --- a/gapic-generator/test/gapic/schema/api_test.rb +++ b/gapic-generator/test/gapic/schema/api_test.rb @@ -16,6 +16,7 @@ require "test_helper" require "api_test_resources" +require "gapic/generators/base_generator" class ApiTest < Minitest::Test API_INFO = ApiTestResources::API_INFO @@ -41,6 +42,7 @@ def test_parse_parameters_literal [":gem.:is_cloud_product", API_INFO[:is_cloud_product].to_s], [":gem.:rest_numeric_enums", API_INFO[:rest_numeric_enums].to_s], [":generate_metadata", API_INFO[:generate_metadata].to_s], + [":format", API_INFO[:format].to_s], [":gem.:name", API_INFO[:name]], [":gem.:namespace", API_INFO[:namespace]], @@ -91,8 +93,9 @@ def test_parse_parameters_readable ["gem-generic-endpoint", API_INFO[:generic_endpoint]], ["gem-is-cloud-product", API_INFO[:is_cloud_product]], ["rest-numeric-enums", API_INFO[:rest_numeric_enums]], - # this parameter has no alias in gapic-generator-vanilla + # these parameters have no alias in gapic-generator-vanilla [":generate_metadata", API_INFO[:generate_metadata]], + [":format", API_INFO[:format]], ["gem-name", API_INFO[:name]], ["gem-namespace", API_INFO[:namespace]], @@ -147,6 +150,20 @@ def test_parameter_reconstruction assert_equal parameter, api.protoc_parameter end + def test_format_default_and_override + default_api = Gapic::Schema::Api.new OpenStruct.new(parameter: "", proto_file: []) + assert default_api.format? + + unformatted_api = Gapic::Schema::Api.new OpenStruct.new(parameter: ":format=false", proto_file: []) + refute unformatted_api.format? + + file = Google::Protobuf::Compiler::CodeGeneratorResponse::File.new( + name: "foo.rb", content: "x = 'unformatted'\n" + ) + formatted = Gapic::Generators::BaseGenerator.new(unformatted_api).send(:format_files, [file]) + assert_equal "x = 'unformatted'\n", formatted.first.content + end + private # Create a list of parameters and values diff --git a/shared/test_resources/api_test_resources.rb b/shared/test_resources/api_test_resources.rb index d0b1f6439..299c4a6aa 100644 --- a/shared/test_resources/api_test_resources.rb +++ b/shared/test_resources/api_test_resources.rb @@ -28,6 +28,7 @@ module ApiTestResources is_cloud_product: true, generate_metadata: false, rest_numeric_enums: true, + format: false, # string parameters name: 'google-cloud-container_analysis-v1', @@ -113,6 +114,7 @@ module ApiTestResources wrapper_gem_name: API_INFO[:wrapper_gem_name_override] }, transports: API_INFO[:transports], - generate_metadata: API_INFO[:generate_metadata] + generate_metadata: API_INFO[:generate_metadata], + format: API_INFO[:format] }.freeze end