# Copyright 2023 Google LLC
#
# 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
#
#      https://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.

"""
Provides proto_library target
Exports grpc service config
"""
load ("@rules_proto//proto:defs.bzl", "proto_library")

# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])

# This BUILD file is the framework for gapic-showcase-extended (an extension to the existing gapic-showcase)
# It serves to augment the existing showcase project with generic protos not *yet* suited to the upstream project
#
# gapic-showcase project is used to test the generated client behavior with a showcase server
# gapic-showcase-extension project is used to test the generator's behavior

#proto_library(
#  name = "showcase_proto_extended",
#  srcs = [],
#  deps = []
#)