#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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
#
#  http://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.
#

version: v1
plugins:
- name: go
  out: backend/internal
  opt: paths=source_relative
- name: go-grpc
  out: backend/internal
  opt:
  - paths=source_relative
  - require_unimplemented_servers=false
- name: dart
  out: frontend/playground_components/lib/src
  opt: grpc
- plugin: buf.build/protocolbuffers/python
  out: infrastructure
  opt:
   - pyi_out=infrastructure
- plugin: buf.build/grpc/python
  out: infrastructure

# Tour of Beam stubs
- name: go
  out: ../learning/tour-of-beam/backend/playground_api
  opt: paths=source_relative
- name: go-grpc
  out: ../learning/tour-of-beam/backend/playground_api
  opt:
  - paths=source_relative
  - require_unimplemented_servers=false
