# Copyright 2021 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"

  sources = [
    "main.go",
    "main_test.go",
  ]

  deps = [
    "//third_party/golibs:github.com/google/go-cmp",
    "//third_party/golibs:github.com/spf13/pflag",
    "//third_party/golibs:google.golang.org/protobuf",
    "//tools/integration/fint:fint_lib",
    "//tools/integration/fint:proto_lib",
    "//tools/lib/color",
    "//tools/lib/command",
    "//tools/lib/logger",
    "//tools/lib/osmisc",
    "//tools/lib/subprocess",
  ]
}

go_binary("fx-set") {
  gopackage = "go.fuchsia.dev/fuchsia/tools/build/fx-set/cmd"

  deps = [ ":main" ]
}

go_test("tests") {
  output_name = "fx_set_tests"
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/build/fx-set/cmd" ]
  deps = [ ":main" ]
}
