in src/commands/codepush/deployment/history.ts [34:96]
async run(client: AppCenterClient): Promise<CommandResult> {
const app = this.app;
let releases: models.CodePushRelease[];
let metrics: models.CodePushReleaseMetric[];
try {
const releasesHttpRequest = await out.progress(
"Getting CodePush releases...",
clientRequest<models.CodePushRelease[]>((cb) =>
client.codePushDeploymentReleases.get(this.deploymentName, app.ownerName, app.appName, cb)
)
);
releases = releasesHttpRequest.result;
const metricsHttpRequest = await out.progress(
"Getting CodePush releases metrics...",
clientRequest<models.CodePushReleaseMetric[]>((cb) =>
client.codePushDeploymentMetrics.get(this.deploymentName, app.ownerName, app.appName, cb)
)
);
metrics = metricsHttpRequest.result;
const releasesTotalActive = metrics.reduce((sum, releaseMetrics) => (sum += releaseMetrics.active), 0);
let tableTitles: string[] = ["Label", "Release Time", "App Version", "Mandatory", "Description", "Install Metrics"];
tableTitles = tableTitles.map((title) => chalk.cyan(title));
out.table(
out.getCommandOutputTableOptions(tableTitles),
releases.map((release) => {
let releaseRow: string[] = [
release.label,
formatDate(release.uploadTime) + this.generateReleaseAdditionalInfoString(release),
release.targetBinaryRange,
release.isMandatory ? "Yes" : "No",
release.description,
this.generateReleaseMetricsString(release, metrics, releasesTotalActive),
];
if (release.isDisabled) {
releaseRow = releaseRow.map((element) => this.applyDimChalkSkippingLineBreaks(element));
}
return releaseRow;
})
);
return success();
} catch (error) {
debug(`Failed to get list of CodePush deployments - ${inspect(error)}`);
if (error.statusCode === 404) {
const appNotFoundErrorMsg = `The app ${
this.identifier
} does not exist. Please double check the name, and provide it in the form owner/appname. \nRun the command ${chalk.bold(
`${scriptName} apps list`
)} to see what apps you have access to.`;
return failure(ErrorCodes.NotFound, appNotFoundErrorMsg);
} else if (error.statusCode === 400) {
const deploymentNotExistErrorMsg = `The deployment ${chalk.bold(this.deploymentName)} does not exist.`;
return failure(ErrorCodes.Exception, deploymentNotExistErrorMsg);
} else {
return failure(ErrorCodes.Exception, error.response.body);
}
}
}