# Copyright 2017 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")
import("//topaz/runtime/dart_runner/dart_app.gni")

dart_app("ledger_dashboard") {
  main_dart = "main.dart"

  meta = [
    {
      path = rebase_path("meta/ledger_dashboard.cmx")
      dest = "ledger_dashboard.cmx"
    },
  ]

  source_dir = "."
  sources = [
    "src/data_handler.dart",
    "src/ledger_debug_data_handler.dart",
  ]

  deps = [
    "//peridot/bin/ledger/fidl",
    "//peridot/public/fidl/fuchsia.modular",
    "//third_party/dart-pkg/pub/http",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia",
    "//topaz/public/lib/app/dart",
    "//topaz/public/lib/context/dart",
  ]

  resources = [
    {
      path =
          rebase_path("//topaz/app/ledger/ledger_dashboard/webroot/index.html")
      dest = "webroot/index.html"
    },
    {
      path = rebase_path(
              "//topaz/app/ledger/ledger_dashboard/webroot/dashboard.js")
      dest = "webroot/dashboard.js"
    },
    {
      path = rebase_path(
              "//topaz/app/ledger/ledger_dashboard/webroot/dashboard.css")
      dest = "webroot/dashboard.css"
    },
    {
      path = rebase_path("//topaz/app/ledger/ledger_dashboard/webroot/logo.png")
      dest = "webroot/logo.png"
    },
    {
      path = rebase_path("//topaz/app/ledger/ledger_dashboard/dashboard.config")
      dest = "dashboard.config"
    },
  ]
}
