# Copyright 2024 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/sdk/sdk_host_tool.gni")

go_library("lib") {
  sources = [
    "config.go",
    "config_test.go",
    "orchestrator.go",
    "serial.go",
  ]
  deps = [
    ":ffx",
    ":utils",
  ]
}

go_library("ffx") {
  source_dir = "ffx"
  sources = [ "ffx.go" ]
  deps = [ ":utils" ]
}

go_library("utils") {
  source_dir = "utils"
  sources = [ "utils.go" ]
}

go_library("main") {
  source_dir = "cmd"
  sources = [
    "main.go",
    "run.go",
  ]
  deps = [
    ":lib",
    "//third_party/golibs:github.com/google/subcommands",
  ]
}

go_test("orchestrate_tests") {
  library = ":lib"
}

go_binary("orchestrate") {
  library = ":main"
}

# Used for distributing the Orchestrate tool to private IDKs. Not to be included in
# the Fuchsia IDK.
# See http://goto.google.com/orchestrate-distribution-testing.
sdk_host_tool("orchestrate_sdk") {
  category = "partner"
  output_name = "orchestrate"
  deps = [ "//tools/orchestrate" ]
}

group("tests") {
  testonly = true
  deps = [ ":orchestrate_tests" ]
}
