public async run()

in src/commands/distribute/releases/show.ts [29:92]


  public async run(client: AppCenterClient): Promise<CommandResult> {
    const app = this.app;
    const releaseId = Number(this.releaseId);
    const noDestinations = `The release with id ${releaseId} does not have any release destinations.`;
    if (!Number.isSafeInteger(releaseId) || releaseId <= 0) {
      return failure(ErrorCodes.InvalidParameter, `${this.releaseId} is not a valid release id`);
    }

    let releaseDetails: models.ReleaseDetailsResponse;
    try {
      debug("Loading release details");
      const httpRequest = await out.progress(
        "Loading release details...",
        clientRequest<models.ReleaseDetailsResponse>((cb) =>
          client.releasesOperations.getLatestByUser(this.releaseId, app.ownerName, app.appName, cb)
        )
      );
      if (httpRequest.response.statusCode >= 400) {
        throw httpRequest.response.statusCode;
      } else {
        releaseDetails = httpRequest.result;
      }
    } catch (error) {
      if (error === 404) {
        return failure(ErrorCodes.InvalidParameter, `release ${this.releaseId} doesn't exist`);
      } else {
        debug(`Failed to load release details - ${inspect(error)}`);
        return failure(ErrorCodes.Exception, "failed to load release details");
      }
    }

    out.report(
      [
        ["ID", "id"],
        ["Status", "status"],
        ["Name", "appName"],
        ["Display Name", "appDisplayName"],
        ["Version", "version"],
        ["Short Version", "shortVersion"],
        ["Enabled", "enabled"],
        ["Release Notes", "releaseNotes"],
        ["Size", "size"],
        ["OS Required", "minOs"],
        releaseDetails.androidMinApiLevel
          ? ["Android API Required", "androidMinApiLevel"]
          : ["Provisioning Profile Name", "provisioningProfileName"],
        ["Bundle Identifier", "bundleIdentifier"],
        ["Fingerprint", "fingerprint"],
        ["Uploaded At", "uploadedAt", out.report.asDate],
        ["Download URL", "downloadUrl"],
        ["Install URL", "installUrl"],
        ["Icon URL", "appIconUrl"],
        [
          "Destinations",
          "destinations",
          (destinations: models.Destination[]) =>
            destinations && destinations.length > 0 ? JSON.stringify(destinations, null, 2) : noDestinations,
        ],
      ],
      releaseDetails
    );

    return success();
  }