syntax = "proto3";

package conductor_state;

// A git remote
message Remote {
  string name = 1;
  string url = 2;
}

enum ReleasePhase {
  // Release was started with `conductor start` and repositories cloned.
  APPLY_ENGINE_CHERRYPICKS = 0;
  CODESIGN_ENGINE_BINARIES = 1;
  APPLY_FRAMEWORK_CHERRYPICKS = 2;

  // Git tag applied to framework RC branch HEAD and pushed upstream.
  PUBLISH_VERSION = 3;

  // RC branch HEAD pushed to upstream release branch.
  //
  // For example, flutter-1.2-candidate.3 -> upstream/beta
  PUBLISH_CHANNEL = 4;

  // Package artifacts verified to exist on cloud storage.
  VERIFY_RELEASE = 5;

  // There is no further work to be done.
  RELEASE_COMPLETED = 6;
}

enum CherrypickState {
  // The cherrypick has not yet been applied.
  PENDING = 0;

  // The cherrypick has not been applied and will require manual resolution.
  PENDING_WITH_CONFLICT = 1;

  // The cherrypick has been successfully applied to the local checkout.
  //
  // This state requires Cherrypick.appliedRevision to also be set.
  COMPLETED = 2;

  // The cherrypick will NOT be applied in this release.
  ABANDONED = 3;
}

// The type of release that is being created.
//
// This determines how the version will be calculated.
enum ReleaseType {
  // All pre-release metadata from previous beta releases will be discarded. The
  // z must be 0.
  STABLE_INITIAL = 0;

  // Increment z.
  STABLE_HOTFIX = 1;

  // Compute x, y, and m from the candidate branch name. z and n should be 0.
  BETA_INITIAL = 2;

  // Increment n.
  BETA_HOTFIX = 3;
}

message Cherrypick {
  // The revision on trunk to cherrypick.
  string trunkRevision = 1;

  // Once applied, the actual commit revision of the cherrypick.
  string appliedRevision = 2;

  CherrypickState state = 3;
}

message Repository {
  // The development git branch the release is based on.
  //
  // Must be of the form /flutter-(\d+)\.(\d+)-candidate\.(\d+)/
  string candidateBranch = 1;

  // The commit hash at the tip of the branch before cherrypicks were applied.
  string startingGitHead = 2;

  // The difference in commits between this and [startingGitHead] is the number
  // of cherrypicks that have been currently applied.
  string currentGitHead = 3;

  // Path to the git checkout on local disk.
  string checkoutPath = 4;

  // The remote commits will be fetched from.
  Remote upstream = 5;

  // The remote cherrypicks will be pushed to create a Pull Request.
  //
  // This should be a mirror owned by the user conducting the release.
  Remote mirror = 6;

  // Desired cherrypicks.
  repeated Cherrypick cherrypicks = 7;

  // Only for engine repositories.
  string dartRevision = 8;

  // Name of local and remote branch for applying cherrypicks.
  //
  // When the pull request is merged, all commits here will be squashed to a
  // single commit on the [candidateBranch].
  string workingBranch = 9;
}

message ConductorState {
  // One of 'stable', 'beta', or 'dev'
  string releaseChannel = 1;

  // The name of the release.
  string releaseVersion = 2;

  Repository engine = 4;
  Repository framework = 5;
  int64 createdDate = 6;
  int64 lastUpdatedDate = 7;

  repeated string logs = 8;

  // The current [ReleasePhase] that has yet to be completed.
  ReleasePhase currentPhase = 9;

  // A string used to validate that the current conductor is the same version
  // that created the [ConductorState] object.
  string conductorVersion = 10;

  ReleaseType releaseType = 11;
}
