# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/go/go_library.gni")
import("//third_party/protobuf/proto_library.gni")

_protos = [
  "sink",
  "test_result",
]

proto_library("resultsink_proto") {
  sources = []
  foreach(name, _protos) {
    sources += [ "${name}.proto" ]
  }
  proto_in_dir = "//third_party/luci-go"
  import_protobuf_full = true
  generate_python = false
  generate_cc = false
  generate_go = true
}

go_library("resultsink_proto_go") {
  name = "go.chromium.org/luci/resultdb/sink/proto/v1"
  source_dir = "$root_gen_dir/go-proto-gen/src/third_party/luci-go/resultdb/sink/proto/v1"
  non_go_deps = [ ":resultsink_proto" ]
  sources = []

  foreach(name, _protos) {
    sources += [ "${name}.pb.go" ]
  }
  deps = [
    # TODO(https://fxbug.dev/70570): Remove this when we're on protoc 3.14.0 or higher.
    "//third_party/golibs:github.com/golang/protobuf",
    "//third_party/golibs:google.golang.org/protobuf",
    "//third_party/luci-go/resultdb/proto/v1:resultdb_proto_go",
  ]
}
