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

syntax = "proto3";

package recipes.fuchsia.prebuilt_host_tool;

message InputProperties {
  // Jiri manifest to use.
  string manifest = 1;

  // Remote manifest repository.
  string remote = 2;

  message Tool {
    // Name of the tool as it appears in tool_paths.json.
    string name = 1;

    // OS of the tool to build, if cross-compiling. Defaults to the current OS.
    string os = 2;

    // If set, upload the tool to this CIPD package.
    string cipd_package = 3;

    // If set, upload the tool to this GCS bucket.
    string gcs_bucket = 4;

    // Path within `gcs_bucket` to upload the tool to.
    string gcs_path = 5;
  }

  repeated Tool tools = 3;

  // A path within the checkout to a fint parameters file.
  string fint_params_path = 4;

  // The CIPD prefix where the tool binaries should be uploaded.
  string cipd_pkg_prefix = 5;
}
