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

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;

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

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

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

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

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

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

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

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