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

import "recipe_modules/fuchsia/auto_roller/options.proto";

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

  message Package {
    // Name of package to roll.
    string name = 1;

    // Subdirectory for package relative to the checkout root.
    // TODO(atyfto): Enforce that subdirectories cannot be shared between
    // packages.
    string subdir = 2;
  }

  // Packages to roll.
  repeated Package packages = 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;
}
