# Copyright 2020 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/host.gni")
import("//build/rust/rustc_binary.gni")

if (host_toolchain == current_toolchain) {
  rustc_binary("create_bin") {
    name = "create"
    deps = [
      "//third_party/rust_crates:anyhow",
      "//third_party/rust_crates:chrono",
      "//third_party/rust_crates:handlebars",
      "//third_party/rust_crates:heck",
      "//third_party/rust_crates:serde",
      "//third_party/rust_crates:serde_derive",
      "//third_party/rust_crates:serde_json",
      "//third_party/rust_crates:structopt",
      "//third_party/rust_crates:tempfile",
      "//third_party/rust_crates:termion",
    ]

    test_deps = [ "//third_party/rust_crates:matches" ]

    with_unit_tests = true
  }
}

install_host_tools("create") {
  deps = [
    ":create_bin($host_toolchain)",
    "templates($host_toolchain)",
  ]

  outputs = [ "create" ]
}

group("tests") {
  testonly = true

  deps = [ ":create_bin_test($host_toolchain)" ]
}
