runWithConfig method

  1. @override
Future<void> runWithConfig(
  1. Configuration<DeployStatusOption> commandConfig
)
override

Runs this command with prepared configuration (options). Subclasses should override this method.

Implementation

@override
Future<void> runWithConfig(
    final Configuration<DeployStatusOption> commandConfig) async {
  final projectId = commandConfig.value(DeployStatusOption.projectId);
  final limit = commandConfig.value(DeployStatusOption.limit);
  final inUtc = commandConfig.value(DeployStatusOption.utc);
  final deploymentArg =
      commandConfig.optionalValue(DeployStatusOption.deploy);
  final list = commandConfig.value(DeployStatusOption.list);
  final log = commandConfig.value(DeployStatusOption.log);
  final overallStatus = commandConfig.value(DeployStatusOption.overallStatus);

  if (list) {
    // list recent deployments
    if (deploymentArg != null && deploymentArg != '0') {
      throw CloudCliUsageException('Cannot specify deploy id with --list.');
    }
    try {
      await StatusCommands.listDeployAttempts(
        runner.serviceProvider.cloudApiClient,
        logger: logger,
        cloudCapsuleId: projectId,
        limit: limit,
        inUtc: inUtc,
      );
    } on Exception catch (e, s) {
      throw FailureException.nested(e, s, 'Failed to get deployments list');
    }
    return;
  }

  if (log) {
    // view build log
    try {
      final attemptId = await _getDeployAttemptId(projectId, deploymentArg);

      await LogsFeature.fetchBuildLog(
        runner.serviceProvider.cloudApiClient,
        writeln: logger.line,
        projectId: projectId,
        attemptId: attemptId,
        inUtc: inUtc,
      );
    } on Exception catch (e, s) {
      throw FailureException.nested(e, s, 'Failed to get build log');
    }

    return;
  }

  // view a specific deployment
  try {
    final attemptId = await _getDeployAttemptId(projectId, deploymentArg);

    await StatusCommands.showDeploymentStatus(
      runner.serviceProvider.cloudApiClient,
      logger: logger,
      cloudCapsuleId: projectId,
      attemptId: attemptId,
      inUtc: inUtc,
      outputOverallStatus: overallStatus,
    );
  } on Exception catch (e, s) {
    throw FailureException.nested(e, s, 'Failed to get deployment status');
  }
}