# Copyright 2022 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.

load(
    "@fuchsia_infra//infra:infra.bzl",
    "fuchsia_builder_group",
)
load(
    "@rules_fuchsia//fuchsia:defs.bzl",
    "fuchsia_emulator",
    "fuchsia_local_package_repository",
    "fuchsia_remote_product_bundle",
)
load("@rules_fuchsia//fuchsia:workflows.bzl", "fuchsia_development_configuration")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")

# This is the top level target that gets built by infra
fuchsia_builder_group(
    name = "buildbot",
    build_only = [
        "//src/fortune_teller:pkg",
    ],
    cipd_uploads = [
        "//src:artifact_cipd_release",
        "//src:debug_symbol_cipd_release",
    ],
    test_groups = [
        "//src:tests",
    ],
)

# Development Flags
bool_flag(
    name = "no_kvm",
    build_setting_default = False
)

config_setting(
    name = "disable_kvm",
    flag_values = {
        ":no_kvm": "true"
    }
)

# Environment Configuration

# The workstation product bundle.
fuchsia_remote_product_bundle(
    name = "pb_ws",
    product_name = "workstation_eng.qemu-x64",
    repository = "workstation-packages",
)

# The workstation product bundle for running on the chromebook
fuchsia_remote_product_bundle(
    name = "pb_chromebook",
    product_name = "workstation_eng.chromebook-x64",
    repository = "workstation-packages",
)

# A fuchsia emulator which runs the workstation product.
# To launch this emulator without kvm run `bazel run --//:no_kvm //:emu_ws.start
fuchsia_emulator(
    name = "emu_ws",
    emulator_name = "workstation-emulator",
    launch_options = [
        "--headless",
    ] + select({
        ":disable_kvm": [
            "--engine",
            "qemu",
            "--startup-timeout",
            "720",
            "--accel",
            "none",
            "--device",
            "qemu-x64-emu-min",
        ],
        "//conditions:default": []
    }
    ),
    product_bundle = ":pb_ws",
)

fuchsia_local_package_repository(
    name = "dev_repo",
    repo_name = "devhost",
    repo_path = ".package_repos/devhost",
)

# Run this target to set up the environment for working with the workstation
# product on an emulator
fuchsia_development_configuration(
    name = "ws_emu_development",
    emulator = ":emu_ws",
    package_repository = ":dev_repo",
    product_bundle = ":pb_ws",
)

# Run this target to set up the environment for working with a physical
# chromebook running the workstation product. This target should run after
# the device has been plugged in to the host.
fuchsia_development_configuration(
    name = "ws_development",
    autodetect_target = True,
    package_repository = ":dev_repo",
    stop_emulators = True,
    product_bundle = ":pb_chromebook",
)
