# 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/compiled_action.gni")
import("//build/config/build_api_module.gni")
import("//build/dart/dart_packages.gni")
import("//build/python/python_binary.gni")
import("//build/python/python_host_test.gni")
import("//build/sdk/sdk_documentation.gni")

group("docsgen") {
  testonly = true
  deps = [ ":generated_docs" ]
}

_dartdoc_transforms_script_target = "dartdoc_transforms"
python_binary(_dartdoc_transforms_script_target) {
  main_source = "//build/dart/gen_reference_docs.py"
  output_name = "gen_reference_docs.pyz"
  sources = [ "//build/dart/generate_dart_toc.py" ]
  deps = [ "//third_party/pyyaml:yaml" ]
}

# See dartdoc_transforms.py for more information
action("dart_sdk_docs") {
  script_output = get_target_outputs(":${_dartdoc_transforms_script_target}")
  script = script_output[0]
  metadata = {
    # Record metadata for the //tools/docsgen build API.
    generated_docset = [
      {
        name = "dartdoc"
        archive = {
          origin_file =
              rebase_path("$host_out_dir/obj/tools/docsgen/dartdoc_out.zip",
                          root_build_dir)
          base_folder = "dartdoc"
        }
        dest_folder = "sdk/dart"
      },
    ]
  }
  inputs = [
    "//sdk/dart",
    "//analysis_options.yaml",
    "//prebuilt/third_party/dart/${host_platform}/bin/dart",
  ]

  outputs = [
    "$target_out_dir/dartdoc_out.zip",
    "$target_gen_dir/.dart_tool/package_config.json",
    "$target_gen_dir/lib/lib.dart",
    "$target_gen_dir/pubspec.lock",
    "$target_gen_dir/pubspec.yaml",
  ]
  depfile = "$target_out_dir/$target_name.d"

  args = [
    "--delete-artifact-files",
    "--run-toc",
    "--zipped-result",
    "--gen-dir",
    rebase_path(target_gen_dir, root_build_dir),
    "--out-dir",
    rebase_path("$target_out_dir/__untraced_dartdoc_output__", target_gen_dir),
    "--prebuilts-dir",
    rebase_path("//prebuilt/third_party/dart/${host_platform}/bin",
                target_gen_dir),
    "--dep-file",
    rebase_path(depfile, root_build_dir),
  ]

  foreach(pkg, dart_packages_list) {
    args += [ rebase_path(pkg, root_build_dir) ]
  }

  deps = [ ":${_dartdoc_transforms_script_target}" ] + dart_packages_list
}

_fidldoc_transforms_script_target = "fidldoc_transforms"
python_binary(_fidldoc_transforms_script_target) {
  main_source = "//build/fidl/gen_fidldocs.py"
  output_name = "gen_fidldocs.pyz"
  sources = []
  deps = []
}

# Runs one time python fidldoc generation script.
action("invoke_fidldoc") {
  script_output = get_target_outputs(":${_fidldoc_transforms_script_target}")
  script = script_output[0]
  metadata = {
    # Record metadata for the //tools/docsgen build API.
    generated_docset = [
      {
        name = "fidldoc"
        archive = {
          origin_file =
              rebase_path("$host_out_dir/obj/tools/docsgen/fidldoc.zip",
                          root_build_dir)
          base_folder = "fidldoc"
        }
        dest_folder = "sdk/fidl"
      },
    ]
  }
  inputs = [
    "$root_build_dir/host-tools/fidldoc",
    "$root_build_dir/host-tools/fidldoc.config.json",
    "$root_build_dir/sdk_fidl_json.json",
  ]

  outputs = [ "$target_out_dir/fidldoc.zip" ]
  depfile = "$target_out_dir/$target_name.d"

  args = [
    "--zipped-result",
    "--build-dir",
    rebase_path(root_build_dir, root_build_dir),
    "--out-dir",
    rebase_path(target_out_dir, root_build_dir),
    "--dep-file",
    rebase_path(depfile, root_build_dir),
  ]

  deps = [
    ":${_fidldoc_transforms_script_target}",
    "//build/fidl:sdk_fidl",
    "//tools/fidl/fidldoc:fidldoc_copy_config($host_toolchain)",
    "//tools/fidl/fidldoc($host_toolchain)",
  ]
}

clidoc_tarfile = "clidoc_out.tar.gz"
compiled_action("invoke_clidoc") {
  tool = "//tools/clidoc:clidoc_bin"
  tool_output_name = "clidoc"
  testonly = true
  depfile = "$target_out_dir/$target_name.d"
  deps = [ "//tools:tools" ]
  metadata = {
    # Record metadata for the //tools/docsgen build API.
    generated_docset = [
      {
        name = "clidoc"
        archive = {
          origin_file =
              rebase_path("$host_out_dir/obj/tools/docsgen/$clidoc_tarfile",
                          root_build_dir)
          base_folder = "clidoc"
        }
        dest_folder = "tools/sdk"
      },
    ]
  }
  outputs = [ "$target_out_dir/$clidoc_tarfile" ]
  args = [
    "-o",
    rebase_path("docs/reference/tools/sdk-docs", root_build_dir),
    "--quiet",

    # TODO (https://fxbug.dev/86553) to rename tarball-dir.
    "--tarball-dir",
    rebase_path("$target_out_dir/$clidoc_tarfile", root_build_dir),
    "--depfile",
    rebase_path(depfile, root_build_dir),
  ]
}

_helpdoc_script_target = "helpdoc_generation"
helpdoc_tarfile = "helpdoc_out.tar.gz"
python_binary(_helpdoc_script_target) {
  main_source = "//tools/docsgen/gen_helpdocs.py"
  output_name = "gen_helpdocs.pyz"
  sources = []
  deps = []
}

_docsgen_transforms_script_target = "docsgen_transforms"
python_binary(_docsgen_transforms_script_target) {
  main_source = "//tools/docsgen/docsgen_transforms.py"
  output_name = "docsgen_transforms.pyz"
  sources = []
  deps = []
}

if (is_host) {
  python_host_test("gen_helpdocs_test") {
    main_source = "gen_helpdocs_test.py"
    sources = [ "gen_helpdocs.py" ]
  }

  python_host_test("docsgen_transforms_test") {
    main_source = "docsgen_transforms_test.py"
    sources = [ "docsgen_transforms.py" ]
  }
}

group("tests") {
  testonly = true
  deps = [
    ":docsgen_transforms_test($host_toolchain)",
    ":gen_helpdocs_test($host_toolchain)",
  ]
}

# Runs one time python helpdoc generation script.
# TODO (https://fxbug.dev/87512) to add depsfile.
action("invoke_helpdoc") {
  script_output = get_target_outputs(":${_helpdoc_script_target}")
  script = script_output[0]
  testonly = true
  depfile = "$target_out_dir/$target_name.d"
  metadata = {
    # Record metadata for the //tools/docsgen build API.
    generated_docset = [
      {
        name = "helpdoc"
        archive = {
          origin_file =
              rebase_path("$host_out_dir/obj/tools/docsgen/$helpdoc_tarfile",
                          root_build_dir)
          base_folder = "helpdoc"
        }
        dest_folder = "tools/fx"
      },
    ]
  }
  outputs = [
    "$target_out_dir/$helpdoc_tarfile",
    "$target_gen_dir/helpdoc.log",
  ]

  args = [
    "--out-path",
    rebase_path("$target_out_dir/$helpdoc_tarfile", root_build_dir),
    "--src-dir",
    rebase_path("//", root_build_dir),
    "--log-to-file",
    rebase_path("$target_gen_dir/helpdoc.log", root_build_dir),
    "--depfile",
    rebase_path(depfile, root_build_dir),
  ]

  deps = [ ":${_helpdoc_script_target}" ]
}

compiled_action("invoke_cmldoc") {
  tool = "//tools/cmc:cmc"
  tool_output_name = "cmc"
  testonly = true
  metadata = {
    # Record metadata for the //tools/docsgen build API.
    generated_docset = [
      {
        name = "cmldoc"
        origin_files = [ rebase_path("$target_out_dir/cmldoc_out/index.md",
                                     root_build_dir) ]
        dest_folder = "sdk/cml"
      },
    ]
  }
  outputs = [ "$target_out_dir/cmldoc_out/index.md" ]
  args = [
    "print-cml-reference",
    "-o",
    rebase_path("$target_out_dir/cmldoc_out/index.md", root_build_dir),
  ]
  deps = [ "//tools/cmc($host_toolchain)" ]
}

# Set up targets and files for sdk_documentation and build_api_module.
ref_docs = [
  {
    target = ":dart_sdk_docs($host_toolchain)"
    file = "dartdoc_out.zip"
  },
  {
    target = ":invoke_clidoc($host_toolchain)"
    file = "clidoc_out.tar.gz"
  },
  {
    target = ":invoke_cmldoc($host_toolchain)"
    file = "cmldoc_out/index.md"
  },
  {
    target = ":invoke_fidldoc($host_toolchain)"
    file = "fidldoc.zip"
  },
  {
    target = ":invoke_helpdoc($host_toolchain)"
    file = "helpdoc_out.tar.gz"
  },
  {
    target = "//bundles:create_all_drivers_doc"
    file = "all_drivers_doc.yaml"
  },
]

ref_doc_files = []
ref_doc_targets = []
foreach(ref_doc, ref_docs) {
  out_dir = get_label_info(ref_doc.target, "target_out_dir")
  ref_doc_file_prefix = ref_doc.file

  # Unlike other ref docs, drivers docs uses gen_dir instead of output_dir
  if (ref_doc_file_prefix == "all_drivers_doc.yaml") {
    gen_dir = get_label_info(ref_doc.target, "target_gen_dir")
    ref_doc_file_path = "$gen_dir/$ref_doc_file_prefix"
  } else {
    ref_doc_file_path = "$out_dir/$ref_doc_file_prefix"
  }
  ref_doc_files += [
    {
      source = ref_doc_file_path
      dest = "docs/$ref_doc_file_prefix"
    },
  ]
  ref_doc_targets += [ ref_doc.target ]
}

# This exposes relevant reference doc paths for infra to upload.
#
# Type: list(scope)
#
#   name:
#     Required: name of the reference docs to be generated. This name
#     will be used to identify the ref doc git commit process downstream
#     in the docsgen recipe.
#     Type: string
#
#   archive:
#     Optional: If this key is present, this denotes that the ref docs
#     are compressed. This is most likely to adhere to hermetic builds.
#     Additional specific parameters will be included pertaining to archive
#     paths.
#     Type: scope
#
#     origin_file:
#        Required: path to compressed archived file holding ref docs.
#        Type: path relative to $root_build_dir
#
#     base_folder:
#        Optional: base folder containing all ref docs once origin file
#        is decompresssed. Alternatively if base folder is not specified.
#        all reference docs are simply decompressed into the current dir.
#        Type: string
#
#   origin_files:
#     Optional: If this key is present, this denotes that the ref docs
#     can be listed and are decompressed.
#     Type: list of file paths relative to $root_build_dir
#
#   dest_folder:
#     Required: path to destination folder within reference docs repo
#     Type: path relative to reference docs repo root directory
#

build_api_module("generated_docs") {
  testonly = true
  data_keys = [ "generated_docset" ]
  deps = ref_doc_targets
}

sdk_documentation("ref_docs_sdk") {
  name = "ref_docs"
  testonly = true
  category = "partner"

  files = ref_doc_files
  non_sdk_deps = ref_doc_targets
}
