// Copyright 2021 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.
{
    include: [
        "inspect/client.shard.cml",
        "syslog/client.shard.cml",
    ],
    program: {
        runner: "elf",
        binary: "bin/fshost",
        lifecycle: { stop_event: "notify" },
    },
    children: [
        {
            name: "tmpfs",
            url: "fuchsia-boot:///memfs#meta/memfs.cm",
        },
    ],
    capabilities: [
        {
            directory: "data",
            rights: [ "rw*" ],
            path: "/fs/data/root",
        },
        {
            directory: "factory",
            rights: [ "r*" ],
            path: "/fs/factory",
        },
        {
            protocol: [
                "fuchsia.fshost.Admin",
                "fuchsia.fshost.BlockWatcher",
            ],
        },
    ],
    use: [
        {
            directory: "dev-topological",
            rights: [ "r*" ],
            path: "/dev",
        },
        {
            directory: "boot",
            rights: [ "rx*" ],
            path: "/boot",
        },
        {
            protocol: [
                "fuchsia.boot.Arguments",
                "fuchsia.boot.Items",
                "fuchsia.boot.WriteOnlyLog",
                "fuchsia.process.Launcher",
            ],
        },
        {
            protocol: "fuchsia.tracing.provider.Registry",

            // Trace manager may be excluded from builds where tracing is not
            // expected to be used for observability, such as in the bringup
            // product and non-eng builds of any product.
            availability: "optional",
        },
    ],
    offer: [
        {
            protocol: [
                "fuchsia.logger.LogSink",
                "fuchsia.scheduler.RoleManager",
            ],
            from: "parent",
            to: [ "#tmpfs" ],
        },
    ],
    expose: [
        {
            directory: [
                "data",
                "factory",
            ],
            from: "self",
        },
        {
            directory: "memfs",
            from: "#tmpfs",
            as: "tmp",
        },
        {
            protocol: [
                "fuchsia.fshost.Admin",
                "fuchsia.fshost.BlockWatcher",
            ],
            from: "self",
        },
    ],
}
