# 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_root/sky/tools/dist_dart_pkg.py"

    source = "$flutter_root/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_root/sky/packages/flutter_services",
    ]
  }
  action("sky_engine") {
    script = "$flutter_root/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_root/sky/packages/sky_engine",
      "$flutter_root/sky/packages/sky_engine:sky_engine_pkg_helper",
    ]
  }

  action("sky_services") {
    script = "$flutter_root/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_root/sky/packages/sky_services",
      "$flutter_root/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",
    ]
  }
}
