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

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

  deps = [
    "//garnet/lib/rust/fidl_fuchsia_pkg_ext",
    "//garnet/lib/rust/files_async",
    "//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-zircon",
    "//src/sys/lib/fuchsia_url:fuchsia_url",
    "//src/sys/lib/fuchsia_url_rewrite",

    # "//garnet/public/rust/tuf", FIXME re-enable once tuf is on futures alpha 13
    "//sdk/fidl/fuchsia.amber:fuchsia.amber-rustc",
    "//sdk/fidl/fuchsia.pkg:fuchsia.pkg-rustc",
    "//sdk/fidl/fuchsia.pkg.rewrite:fuchsia.pkg.rewrite-rustc",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:maplit",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:tempfile",
    "//zircon/public/fidl/fuchsia-io:fuchsia-io-rustc",
  ]
}

# Ensure the contents of this package stay in sync with //garnet/tests/amberctl:amberctl-tests
package("pkg_resolver") {
  deps = [
    ":bin",
  ]
  binaries = [
    {
      name = "pkg_resolver"
    },
  ]

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

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

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