// Copyright 2020 The Chromium OS 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 project_mgmt;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/project_mgmt";

// Defines ACLs for a project's builders.
message BuildbucketAcls {
  // A list of LUCI Auth Service groups that can view a project's builds.
  repeated string buildbucket_readers = 1;
}

// Describes the location of a local manifest file.
// See https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md#local-manifests.
message LocalManifest {
  // URL of the repo with the local manifest. E.g.
  // https://chrome-internal.googlesource.com/chromeos/project/...
  string repo_url = 1;
  // Path to the local manifest.
  // Relative to the repo.
  string manifest_path = 2;
}

// Information about the project's HWID file in the chromeos-hwid repo.
message HWIDInfo {
  // A key in the project.yaml metadata file, to look up the branch, path, etc.
  // For example, to match the entry in the project.yaml file:
  //
  // MILKYWAY:
  //   board: GALAXY
  //   branch: master
  //   version: 3
  //   path: v3/MILKYWAY
  //
  // project_key should be 'MILKYWAY'. The matching is case-insensitive.
  string project_key = 1;
}

// Defines the metadata for a project, which ultimately controls how this
// project is managed throughout the infrastructure.
//
// NEXT ID: 9
message Project {
  // Defines the human-readable name for the project.
  string name = 1;
  // Defines the git-repo path for the project.
  string repo = 2;
  // Defines the path that stores all of the project configuration.
  // Relative to the git-repo
  string config_path = 3;
  // Defines the path the repo is checked out to in the source tree, i.e. the
  // "path" attribute in the manifest.
  string repo_checkout_path = 4;
  // Defines ACLs for a project's builders.
  BuildbucketAcls buildbucket_acls = 5;
  // Define the project's local_manifest.
  LocalManifest local_manifest = 6;
  // The Google Storage bucket for artifacts from the project's builds.
  string gs_bucket = 7;

  HWIDInfo hwid_info = 8;
}

message ProjectList {
  repeated Project value = 1;
}
