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

// TODO(atyfto): Migrate to roller options.
message InputProperties {
  // Jiri remote manifest project.
  string project = 1;

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

  // Remote manifest repository.
  string remote = 3;

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

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

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

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