// 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.

library fuchsia.sys2;

using fuchsia.component;
using fuchsia.data;

/// A program declaration.
///
/// This declaration is set by executable components to designate the runner to
/// use and pass runner-specific program information to it.
///
/// To learn more about runners, see:
/// https://fuchsia.dev/fuchsia-src/glossary#runner
table ProgramDecl {
    /// The name of the runner to use to run the component. Must match a
    /// `RunnerRegistration` in the component's environment.
    ///
    /// This may be absent if a `UseRunnerDecl` is set instead.
    // TODO(fxbug.dev/68827): Replace `UseRunnerDecl` with this.
    1: fuchsia.component.name runner;

    /// Information about the program to run when the component is executed. The
    /// component manager provides the contents of this dictionary to the runner
    /// when executing this program.
    ///
    /// For instance, this might contain a path to the program's executable
    /// image, or program arguments.
    2: fuchsia.data.Dictionary info;
};
