# 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/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/host.gni")
import("//build/package.gni")

go_library("remote_module_resolver_lib") {
  name = "remote_module_resolver"

  deps = [
    ":gojsonpointer",
    ":gojsonreference",
    ":gojsonschema",
  ]
}

go_library("gojsonpointer") {
  name = "github.com/xeipuuv/gojsonpointer"
  source_dir = "//third_party/golibs/github.com/xeipuuv/gojsonpointer"
}
go_library("gojsonreference") {
  name = "github.com/xeipuuv/gojsonreference"
  source_dir = "//third_party/golibs/github.com/xeipuuv/gojsonreference"
}
go_library("gojsonschema") {
  name = "github.com/xeipuuv/gojsonschema"
  source_dir = "//third_party/golibs/github.com/xeipuuv/gojsonschema"
}

go_binary("remote_module_resolver") {
  gopackage = "remote_module_resolver"
  output_name = "remote_module_resolver"
  deps = [
    ":remote_module_resolver_lib",
  ]
}

go_test("remote_module_resolver_test") {
  gopackage = "remote_module_resolver/repository"
  deps = [
    ":remote_module_resolver_lib",
  ]
}

install_host_tools("host") {
  deps = [
    ":remote_module_resolver",
  ]
  outputs = [
    "remote_module_resolver",
  ]
}

install_host_tools("host_tests") {
  deps = [
    ":remote_module_resolver_test",
  ]
  outputs = [
    "remote_module_resolver_test",
  ]
}
