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

go_library("main") {
  source_dir = "cmd"
  deps = [ "//tools/sdk-tools/sdkcommon" ]
  sources = [
    "fpublish.go",
    "fpublish_test.go",
  ]
}

go_binary("fpublish") {
  gopackage = "go.fuchsia.dev/fuchsia/tools/sdk-tools/fpublish/cmd"
  deps = [ ":main" ]
}

go_test("fpublish-test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/sdk-tools/fpublish/cmd" ]
  deps = [ ":main" ]
}

install_host_tools("fpublish-host") {
  deps = [
    ":fpublish",
    "//tools/sdk-tools/sdkcommon:host-tool-deps",
  ]
  outputs = [ "fpublish" ]
}

sdk_host_tool("fpublish_sdk") {
  category = "partner"
  output_name = "fpublish"
  deps = [ ":fpublish" ]
}
