# Copyright 2013 The Flutter 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("//flutter/build/zip_bundle.gni")

if (is_android) {
  action("flutter_services") {
    script = "//flutter/sky/tools/dist_dart_pkg.py"

    source = "//flutter/sky/packages/flutter_services"
    dest = "$root_build_dir/dist/packages/flutter_services"

    inputs = [
      source,
    ]
    outputs = [
      dest,
    ]

    args = [
      "--source",
      rebase_path(source),
      "--dest",
      rebase_path(dest),
    ]

    deps = [
      "//flutter/sky/packages/flutter_services",
    ]
  }
  action("sky_engine") {
    script = "//flutter/sky/tools/dist_dart_pkg.py"

    source = "$root_gen_dir/dart-pkg/sky_engine"
    dest = "$root_build_dir/dist/packages/sky_engine"

    inputs = [
      source,
    ]
    outputs = [
      dest,
    ]

    args = [
      "--source",
      rebase_path(source),
      "--dest",
      rebase_path(dest),
    ]

    deps = [
      "//flutter/sky/packages/sky_engine",
      "//flutter/sky/packages/sky_engine:sky_engine_pkg_helper",
    ]
  }

  action("sky_services") {
    script = "//flutter/sky/tools/dist_dart_pkg.py"

    source = "$root_gen_dir/dart-pkg/sky_services"
    dest = "$root_build_dir/dist/packages/sky_services"

    inputs = [
      source,
    ]
    outputs = [
      dest,
    ]

    args = [
      "--source",
      rebase_path(source),
      "--dest",
      rebase_path(dest),
    ]

    deps = [
      "//flutter/sky/packages/sky_services",
      "//flutter/sky/packages/sky_services:sky_services_pkg_helper",
    ]
  }

  zip_bundle("zip") {
    output = "$android_zip_archive_dir/sky_engine.zip"
    files = [
      {
        source = "$root_build_dir/dist/packages/flutter_services"
        destination = "flutter_services"
      },
      {
        source = "$root_build_dir/dist/packages/sky_engine"
        destination = "sky_engine"
      },
      {
        source = "$root_build_dir/dist/packages/sky_services"
        destination = "sky_services"
      },
    ]
    deps = [
      ":flutter_services",
      ":sky_engine",
      ":sky_services",
    ]
  }
}

group("dist") {
  if (is_android) {
    deps = [
      ":zip",
    ]
  }
}
