# Copyright 2017 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/package.gni")

package("cloud_provider_firestore") {
  deprecated_bare_package_url = "//build"

  deps = [
    "app",
    "//peridot/bin/ledger/cobalt:ledger_metrics_registry",
  ]

  resources = [
    {
      path =
          rebase_path(get_label_info(
                          "//peridot/bin/ledger/cobalt:ledger_metrics_registry",
                          "target_gen_dir") + "/ledger_metrics_registry.pb")
      dest = "firebase_auth_ledger_metrics_config.pb"
    },
  ]

  binary = "cloud_provider_firestore"

  meta = [
    {
      path = rebase_path("app/meta/cloud_provider_firestore.cmx")
      dest = "cloud_provider_firestore.cmx"
    },
  ]
}

executable("unittests") {
  testonly = true

  output_name = "cloud_provider_firestore_unittests"

  deps = [
    "//peridot/bin/cloud_provider_firestore/app:unittests",
    "//peridot/bin/cloud_provider_firestore/firestore:unittests",
    "//peridot/bin/cloud_provider_firestore/grpc:unittests",
    "//third_party/googletest:gtest_main",
  ]
}

group("tests") {
  testonly = true

  public_deps = [
    ":unittests",
    "//peridot/bin/cloud_provider_firestore/validation",
  ]
}
