runWithConfig method
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');
}
}