# Copyright 2018 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/rust/rustc_library.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

rustc_library("syslog") {
  assert(is_fuchsia)
  name = "fuchsia_syslog"
  version = "0.1.0"
  edition = "2018"
  with_unit_tests = true
  deps = [
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:tempfile",
  ]
  non_rust_deps = [ "//zircon/public/lib/syslog" ]
}

rustc_library("syslog-listener") {
  name = "fuchsia_syslog_listener"
  version = "0.1.0"
  edition = "2018"
  source_root = "syslog-listener/src/lib.rs"
  deps = [
    ":syslog",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
    "//zircon/system/fidl/fuchsia-logger:fuchsia-logger-rustc",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":fuchsia-syslog-tests",
    "tests",
  ]
}

test_package("fuchsia-syslog-tests") {
  deps = [ ":syslog_test" ]

  tests = [
    {
      name = "fuchsia_syslog_lib_test"
      environments = basic_envs
    },
  ]
}
