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

import "google/protobuf/struct.proto";

message InputProperties {
  // Jiri remote manifest project (optional).
  string project = 1;

  // Jiri manifest to use. If unset, will checkout `remote` using pure git
  // instead of Jiri.
  string manifest = 2;

  // Remote repository.
  string remote = 3;

  // Mapping from tool to binary name.
  map<string, string> output_name_map = 4;

  // Mapping from tool to list of extra platforms to build for.
  map<string, google.protobuf.ListValue> extra_arch_map = 5;

  // Whether to publish the tools.
  bool publish = 6;

  // CIPD prefix under which packages should be published.
  string cipd_root = 7;
}
