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

import "google/protobuf/struct.proto";
import "recipe_modules/fuchsia/auto_roller/options.proto";

message InputProperties {
  // Remote URL of repository to checkout.
  string remote = 1;

  // Mapping from CIPD ensure file path relative to checkout root to list of
  // packages that are pinned in the file and should be rolled.
  map<string, google.protobuf.ListValue> packages_by_ensure_file = 2;

  // A CIPD tag prefix common to all packages where a common version can be
  // extracted.
  string tag = 3;

  // A common CIPD ref to resolve when rolling a set of packages.
  string ref = 4;

  // General options for creating the roll CL.
  recipe_modules.fuchsia.auto_roller.Options roll_options = 5;
}
