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

message InputProperties {
  // Jiri manifest to use.
  string manifest = 1;

  // Remote manifest repository.
  string remote = 2;

  // Super manifest project to update.
  string super_manifest_project = 3;

  // Don't push changes.
  bool dry_run = 4;

  // If the root of the Jiri workspace is itself a Git repository, use that
  // repository as the root of the submodule workspace.
  bool preserve_root = 5;
}
