// Copyright 2023 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_json_roller;

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

message InputProperties {
  // Remote URL of the repository containing the manifests to roll.
  string remote = 1;

  // Message to use for the commit created. Additional footers will be appended
  // to the commit message by the recipe. Required.
  string commit_message = 2;

  // Globs (relative to the checkout directory) matching ensure files that
  // should be rolled.
  repeated string ensure_file_globs = 3;

  message Command {
    // Path to the executable to run, relative to the checkout root.
    string path = 1;
    repeated string args = 2;
  }

  // Optional commands to run after the pins have been updated but before
  // committing the changes. The commands can make changes to other files that
  // will then be included in the commit.
  repeated Command postprocess_commands = 4;

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