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

import("//build/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

rustc_binary("bin") {
  name = "archivist"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//garnet/lib/rust/files_async",
    "//garnet/lib/rust/io_util",
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fdio",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-component",
    "//garnet/public/rust/fuchsia-syslog",
    "//garnet/public/rust/fuchsia-vfs/fuchsia-vfs-watcher",
    "//garnet/public/rust/fuchsia-zircon",
    "//third_party/rust_crates:chrono",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:paste",
    "//third_party/rust_crates:regex",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_derive",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:tempfile",
    "//zircon/public/fidl/fuchsia-io:fuchsia-io-rustc",
  ]
}

package("archivist") {
  deprecated_shell = "//build"

  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "rust_crates/archivist"
      dest = "archivist"
    },
  ]

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

test_package("archivist_tests") {
  deps = [
    ":bin_test",
  ]

  tests = [
    {
      name = "archivist_bin_test"
      dest = "archivist_tests"
      environments = basic_envs
    },
  ]
}
