# 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_library.gni")

group("strings") {
  testonly = true
  public_deps = [
    ":lib($host_toolchain)",
    ":tests",
  ]
}

group("tests") {
  testonly = true

  public_deps = [ ":lib_test($host_toolchain)" ]
}

if (host_toolchain == current_toolchain) {
  rustc_library("lib") {
    name = "intl_strings"
    with_unit_tests = true
    edition = "2018"
    deps = [
      "//src/lib/intl/model:lib",
      "//third_party/rust_crates:anyhow",
      "//third_party/rust_crates:handlebars",
      "//third_party/rust_crates:lazy_static",
      "//third_party/rust_crates:regex",
      "//third_party/rust_crates:serde",
      "//third_party/rust_crates:serde_json",
      "//third_party/rust_crates:thiserror",
      "//third_party/rust_crates:xml-rs",
    ]

    test_deps = []

    sources = [
      "src/json.rs",
      "src/lib.rs",
      "src/message_ids.rs",
      "src/parser.rs",
    ]
  }
}
