# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

template("skyx") {
  bundle_prefix = target_name
  bundle = "$target_gen_dir/${bundle_prefix}.skyx"
  snapshot = "$target_gen_dir/${bundle_prefix}_snapshot.bin"

  action("gen_${bundle_prefix}_snapshot") {
    main_dart = invoker.main_dart

    inputs = [
      main_dart,
    ]
    outputs = [
      snapshot,
    ]

    if (defined(invoker.sources)) {
      inputs += sources
    }

    sky_snapshot_dir =
        get_label_info("//sky/tools/sky_snapshot($host_toolchain)", "root_out_dir")

    script = "//sky/tools/sky_snapshot.py"

    src_dir = "//"
    cwd = rebase_path(src_dir, root_build_dir)

    args = [
      rebase_path("$sky_snapshot_dir/sky_snapshot", src_dir),
      rebase_path(main_dart, src_dir),
      "--package-root",
      rebase_path("//sky/packages/workbench/packages", src_dir),
      "--snapshot",
      rebase_path(snapshot, src_dir),
      "-C",
      cwd,
    ]

    deps = [
      "//sky/tools/sky_snapshot($host_toolchain)",
    ]

    if (defined(invoker.deps)) {
      deps += invoker.deps
    }
  }

  action("gen_${bundle_prefix}_bundle") {
    asset_base = "//sky/packages/material_design_icons/lib/icons"

    sources = [
      "//sky/tools/skyx/bin/skyx.dart",
      snapshot,
    ]

    outputs = [
      bundle,
    ]

    script = "//sky/tools/skyx.py"
    args = [
      "--package-root",
      rebase_path("//sky/tools/skyx/packages", root_build_dir),
      "--asset-base",
      rebase_path(asset_base, root_build_dir),
      "--snapshot",
      rebase_path(snapshot, root_build_dir),
      "-o",
      rebase_path(bundle, root_build_dir),
    ]

    if (defined(invoker.manifest)) {
      sources += [ invoker.manifest ]
      args += [
        "--manifest",
        rebase_path(invoker.manifest, root_build_dir),
      ]
    }

    deps = [
      ":gen_${bundle_prefix}_snapshot",
    ]
  }

  group(target_name) {
    deps = [
      ":gen_${bundle_prefix}_bundle",
    ]
  }
}
