// Copyright 2020 The Go 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 protos;

message Workflow {
  // name is a unique name for a workflow, such as local_go_release. The name must be unique across
  // all workflow configurations.
  string name = 1;

  // buildable_asks is a list of tasks to be performed by the workflow.
  repeated BuildableTask buildable_tasks = 2;

  // git_source is an optional configuration for which git source to fetch.
  GitSource git_source = 3;

  // id is a unique identifier generated by relui when a workflow is created.
  string id = 4;
}

message BuildableTask {
  // name is a unique name for a task, such as fetch_go_source. The name must be unique across
  // all workflow configurations.
  string name = 1;

  // depends_on is the name of a task this task depends on. Artifacts from the depends_on task will be available
  // to this task.
  string depends_on = 2;

  // task_status is the current status of a task.
  TaskStatus status = 3;

  // artifact_url is an optional URL to an artifact published by this task.
  string artifact_url = 4;

  // git_source is an optional configuration for which git source to fetch.
  GitSource git_source = 5;

  // task_type is a unique type for a task, such as FetchGerritSource. Types are used by task runners to identify
  // how to execute a task.
  string task_type = 6;

  // id is a unique identifier generated by relui when a buildable task is created.
  string id = 7;
}

// StartBuildableTaskRequest is a message sent to workers to start working on a BuildableTask for a Workflow.
message StartBuildableTaskRequest {
  // workflow_id is the workflow to which the BuildableTask belongs.
  string workflow_id = 1;

  // buildable_task_id is the id of the BuildableTask to be started.
  string buildable_task_id = 2;

  // buildable_task_type is the type of the BuildableTask to be started.
  string buildable_task_type = 3;
}

// LocalStorage is the persisted data of relui. It is used in development mode for saving application state.
message LocalStorage {
  // workflows are a list of user-created workflows.
  repeated Workflow workflows = 1;
}

message GitSource {
  string url = 1;
  string ref = 2;
}

enum TaskStatus {
  TASK_STATUS_UNKNOWN = 0;
  TASK_STATUS_CREATED = 1;
  TASK_STATUS_STARTED = 2;
}
