// Copyright 2023 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.rust_toolchain;

import "google/protobuf/struct.proto";

message InputProperties {
  // Rust git repository URL.
  string repository = 1;

  // Which product to build: "rust" or "rust_newllvm".
  string product = 2;

  // Which channel to build; usually "nightly" or "beta".
  string channel = 3;

  // LLVM git repository URL; only used if product=rust_newllvm.
  string llvm_repository = 4;

  // LLVM ref; only used if product=rust_newllvm.
  string llvm_ref = 5;

  // Ref to check out if the build has no input commit/change.
  string default_ref = 6;

  // Mapping from platform name to list of builders to trigger (Format:
  // '<project>/<trigger name>').
  map<string, google.protobuf.ListValue> builders = 7;

  // The Rust test suites to run.
  repeated string test_suites = 8;

  // Whether to run tests on an emulated Fuchsia instance.
  bool run_on_target = 9;

  // Whether the recipe is running in a local context.
  bool local = 10;

  // Whether to upload the build results to CIPD.
  bool upload_to_cipd = 11;

  // Whether to download an upstream stage0 compiler for bootstrapping.
  bool use_upstream_stage0 = 12;

  // Don't fail the whole recipe if a cipd package that it attempts to upload
  // already exists
  bool ignore_existing_package = 13;
}
