# Copyright 2019 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.

visibility = [ "$cobalt_root/*" ]

import("//third_party/protobuf/proto_library.gni")

proto_library("pb") {
  sources = [
    "clearcut_extensions.proto",
    "common.proto",
    "encrypted_message.proto",
    "envelope.proto",
    "event.proto",
    "key.proto",
    "observation.proto",
    "observation_batch.proto",
  ]
  import_dirs = [ "$cobalt_root" ]
  proto_in_dir = "$cobalt_root"
  import_protobuf_full = true
  generate_python = false
  cc_generator_options = "lite"
  deps = [
    "$cobalt_root/src/lib/clearcut:clearcut_proto",
    "$cobalt_root/src/registry:cobalt_registry_proto",
    "//third_party/boringssl",
  ]
  extra_configs = [ "$cobalt_root:cobalt_config" ]
}

proto_library("system_data_history") {
  proto_in_dir = "$cobalt_root"
  cc_generator_options = "lite"
  sources = [ "system_data_history.proto" ]
  extra_configs = [ "$cobalt_root:cobalt_config" ]
  deps = [ ":pb" ]
}

source_set("metadata_builder") {
  sources = [
    "metadata_builder.cc",
    "metadata_builder.h",
  ]
  public_deps = [ ":pb" ]

  deps = [
    ":system_data_history",
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/lib/util:consistent_proto_store",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/lib/util:file_system",
    "$cobalt_root/src/lib/util:protected_fields",
    "$cobalt_root/src/logger:project_context",
    "$cobalt_root/src/system_data",
  ]
}

source_set("tests") {
  testonly = true
  sources = [ "metadata_builder_test.cc" ]
  deps = [
    ":metadata_builder",
    ":pb",
    "$cobalt_root/src:logging",
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/lib/util:posix_file_system",
    "$cobalt_root/src/lib/util/testing:test_with_files",
    "$cobalt_root/src/logger:project_context",
    "$cobalt_root/src/system_data:fake_system_data",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/googletest:gtest",
  ]
}
