# Copyright 2019 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.
#
# WARNING: This file was machine-generated from previous json files and
# will eventually be deleted.

group("ledger") {
  testonly = true
  public_deps = [
    "//src/ledger/bin",
  ]
}

group("all") {
  testonly = true
  public_deps = [
    "//peridot/packages/prod:basemgr_launcher",
    "//peridot/packages/prod:clipboard_agent",
    "//peridot/packages/prod:cloud_provider_firestore",
    "//peridot/packages/prod:discover",
    "//peridot/packages/prod:integration_testing",
    "//peridot/packages/prod:ledger",
    "//peridot/packages/prod:maxwell",
    "//peridot/packages/prod:modular",
    "//peridot/packages/prod:module_resolver",
    "//peridot/packages/prod:sessionctl",
  ]
}

group("basemgr_launcher") {
  testonly = true
  public_deps = [
    "//peridot/bin/basemgr_launcher",
  ]
}

group("auto_login_base_shell") {
  testonly = true
  public_deps = [
    "//peridot/bin/basemgr:auto_login_base_shell",
  ]
}

group("dev_base_shell") {
  testonly = true
  public_deps = [
    "//peridot/bin/basemgr:dev_base_shell",
  ]
}

group("sessionctl") {
  testonly = true
  public_deps = [
    "//peridot/bin/sessionctl",
  ]
}

group("cloud_provider_firestore") {
  testonly = true
  public_deps = [
    "//src/ledger/cloud_provider_firestore/bin",
  ]
}

group("clipboard_agent") {
  testonly = true
  public_deps = [
    "//peridot/bin/agents/clipboard:clipboard_agent",
  ]
}

group("integration_testing") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:test_runner",
    "//peridot/bin/sessionmgr:dev_session_shell",
    "//peridot/bin/sessionmgr/story_runner:dev_story_shell",
    "//peridot/packages/prod:dev_base_shell",
    "//peridot/packages/prod:discover",
    "//peridot/packages/prod:modular",
    "//peridot/packages/testing:modular_test_harness",
  ]
}

group("maxwell") {
  testonly = true
  public_deps = [
    "//peridot/bin/context_engine",
  ]
}

group("module_resolver") {
  testonly = true
  public_deps = [
    "//peridot/bin/module_resolver",
    "//peridot/bin/module_resolver/module_package_indexer",
  ]
}

group("modular") {
  testonly = true
  public_deps = [
    "//peridot/bin/basemgr",
    "//peridot/bin/sessionmgr",
    "//peridot/cloud/go/src/remote_module_resolver:host",
    "//peridot/packages/prod:auto_login_base_shell",
  ]
}

group("discover") {
  testonly = true
  public_deps = [
    "//src/stories/bin/discovermgr",
  ]
}
