// Copyright 2020 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.fuchsia_roller;

import "google/protobuf/struct.proto";

message InputProperties {
  // Jiri remote manifest project.
  string project = 1;

  // Jiri manifest to use.
  string manifest = 2;

  // Remote manifest repository.
  string remote = 3;

  // The type of roll to perform.
  string roll_type = 4;

  // Path to the manifest to edit relative to $project.
  string import_in = 5;

  // Name of the <project> or <import> to edit in $import_in.
  string import_from = 6;

  // Whether to enforce locks from lockfiles.
  // TODO: Delete this property after we have full lockfile support in
  // integration repo.
  bool enforce_locks = 7;

  // If no revision or ref is specified in the build input, resolve and roll to
  // this ref. E.g. "refs/heads/main".
  string default_ref = 8;

  // Whether to force-submit the change, bypassing CQ.
  bool force_submit = 9;

  // Whether CQ should skip running tryjobs (but still respect tree status).
  bool no_tryjobs = 10;

  // Whether to dry-run the auto-roller (CQ+1 and abandon the change).
  bool dry_run = 11;

  // Line of text to divide the commit header and body from the footers.
  string commit_divider = 12;

  // Whether to comment on the rolled commits once roll is complete.
  bool send_comment = 13;

  // The owners responsible for watching this roller e.g. username@google.com.
  repeated string owners = 14;

  // Whether to make roll Change-Ids unique to the build.
  bool create_unique_change_id = 15;

  // Notify option when pushing roll CL.
  string cl_notify_option = 16;

  // Map of bucket to list of extra tryjobs to include.
  map<string, google.protobuf.ListValue> include_tryjobs = 17;
}
