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

group("garnet") {
  testonly = true

  deps = [
    ":build-info",
    "bin",
    "examples",
    # TODO: Add more.
  ]
}

declare_args() {
  # Product configuration of the current build
  build_info_product = ""

  # Board configuration of the current build
  build_info_board = ""

  # Logical version of the current build. If not set, defaults to the timestamp
  # of the most recent update.
  build_info_version = ""
}

build_info_files = {
  product = "$target_gen_dir/product.txt"
  board = "$target_gen_dir/board.txt"
  version = "$target_gen_dir/version.txt"
  jiri_snapshot = "//.jiri_root/update_history/latest"
  last_update = "$target_gen_dir/last-update.txt"
}

write_file(build_info_files.product, build_info_product)
write_file(build_info_files.board, build_info_board)

if (build_info_version != "") {
  write_file(build_info_files.version, build_info_version)
} else {
  build_info_files.version = build_info_files.last_update
}

package("build-info") {
  deps = [
    ":last-update.txt",
  ]
  resources = [
    {
      dest = "product"
      path = build_info_files.product
    },
    {
      dest = "board"
      path = build_info_files.board
    },
    {
      dest = "version"
      path = build_info_files.version
    },
    {
      dest = "last-update"
      path = build_info_files.last_update
    },
    {
      dest = "snapshot"
      path = build_info_files.jiri_snapshot
    },
  ]
}

action("last-update.txt") {
  visibility = [ ":*" ]
  sources = [
    build_info_files.jiri_snapshot,
  ]
  outputs = [
    build_info_files.last_update,
  ]
  script = "tools/gen-last-update"
  args = rebase_path(sources + outputs, root_build_dir)
}
