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

syntax = "proto3";

package recipes.fuchsia.contrib.clang_trigger;

message InputProperties {
  // List of toolchain builders to query.
  repeated string input_builders = 1;

  // Build bucket of the input builders.
  string input_builder_bucket = 2;

  // List of triggers to trigger.
  repeated string triggers = 3;

  // Bucket for builders to trigger.
  string bucket = 4;

  // URL for remote git repo.
  string repo = 5;

  // Delay between requests when waiting.
  int32 interval_secs = 6;

  // Time to wait for the builds to end.
  int32 timeout_secs = 7;

}