public async run()

in src/commands/distribute/groups/show.ts [28:105]


  public async run(client: AppCenterClient): Promise<CommandResult> {
    const app = this.app;

    // creating distribution group users list request
    const distributionGroupMembersRequestResponse = clientRequest<models.DistributionGroupUserGetResponse[]>((cb) =>
      client.distributionGroups.listUsers(app.ownerName, app.appName, this.distributionGroup, cb)
    );

    // creating releases information request
    const basicReleasesDetailsRequestResponse = clientRequest<models.BasicReleaseDetailsResponse[]>((cb) =>
      client.releasesOperations.listByDistributionGroup(this.distributionGroup, app.ownerName, app.appName, cb)
    );

    // show spinner and wait for the requests to finish
    await out.progress(
      "Loading distribution group information...",
      Promise.all(
        [distributionGroupMembersRequestResponse, basicReleasesDetailsRequestResponse].map((p: Promise<any>) =>
          p.catch(() => Promise.resolve())
        )
      )
    );

    let distributionGroupMembers: models.DistributionGroupUserGetResponse[];
    try {
      debug(`Getting users of distribution group ${this.distributionGroup}`);
      const response = await distributionGroupMembersRequestResponse;
      if (response.response.statusCode < 400) {
        distributionGroupMembers = response.result;
      } else {
        throw response.response.statusCode;
      }
    } catch (error) {
      if (error === 404) {
        throw failure(ErrorCodes.InvalidParameter, `distribution group ${this.distributionGroup} was not found`);
      } else {
        debug(`Failed to get list of distribution group members - ${inspect(error)}`);
        throw failure(ErrorCodes.Exception, "failed to retrieve list of distribution group users");
      }
    }

    let basicReleasesDetails: models.BasicReleaseDetailsResponse[];
    try {
      debug(`Getting releases details for distribution group ${this.distributionGroup}`);
      const response = await basicReleasesDetailsRequestResponse;
      if (response.response.statusCode < 400) {
        basicReleasesDetails = response.result;
      } else {
        throw response.response.statusCode;
      }
    } catch (error) {
      debug(`Failed to get releases for the distribution group - ${inspect(error)}`);
      throw failure(ErrorCodes.Exception, "failed to retrieve releases details for the distribution group");
    }

    out.reportTitledGroupsOfTables([
      {
        reportFormat: [
          ["Display Name", "displayName"],
          ["Email", "email"],
        ],
        tables: distributionGroupMembers,
        title: "Users:",
      },
      {
        reportFormat: [
          ["ID", "id"],
          ["Short Version", "shortVersion"],
          ["Version", "version"],
          ["Uploaded At", "uploadedAt", out.report.asDate],
        ],
        tables: basicReleasesDetails,
        title: "Releases:",
      },
    ]);

    return success();
  }