tailDeploymentStatus static method

Future<void> tailDeploymentStatus(
  1. Client cloudApiClient, {
  2. required CommandLogger logger,
  3. required String cloudCapsuleId,
  4. required UuidValue attemptId,
  5. bool inUtc = false,
  6. bool skipUploadStage = false,
})

Implementation

static Future<void> tailDeploymentStatus(
  final Client cloudApiClient, {
  required final CommandLogger logger,
  required final String cloudCapsuleId,
  required final UuidValue attemptId,
  final bool inUtc = false,
  final bool skipUploadStage = false,
}) async {
  final stageStream = cloudApiClient.status.tailDeployAttemptStatus(
    cloudCapsuleId: cloudCapsuleId,
    attemptId: attemptId,
  );

  final stageStreams = SplitStreams<DeployStageType, DeployAttemptStage>(
    stageStream,
    DeployStageType.values,
    (final stage) => stage.stageType,
    (final stage) => stage.stageStatus.isFinal,
  );

  if (!skipUploadStage) {
    logger.line('Tracking $cloudCapsuleId deployment $attemptId');
    logger.line('(Press Ctrl+C to exit)');
    logger.line('');
  }

  final stageStatusTailer = _StageStatusTailer(
    logger: logger,
    cloudCapsuleId: cloudCapsuleId,
    attemptId: attemptId,
    stageStreams: stageStreams,
  );
  for (final stageType in DeployStageType.values) {
    if (skipUploadStage && stageType == DeployStageType.upload) {
      continue;
    }

    final stage = await stageStatusTailer.showStageProgress(stageType);
    if (stage.stageStatus == DeployProgressStatus.cancelled ||
        stage.stageStatus == DeployProgressStatus.failure) {
      break;
    }
  }
}