async processTargetAsync()

in src/dialog.tsx [129:181]


  async processTargetAsync(
    target: ICherryPickTarget,
    pullRequestContext: GitPullRequest
  ): Promise<IResult> {
    try {
      const result: IResult = {};

      // Create cherry-pick
      const cherryPickResult = await CherryPickCommitsAsync(
        pullRequestContext,
        target.topicBranch,
        target.targetBranch
      );

      if (cherryPickResult.error || !cherryPickResult.result) {
        result.error =
          cherryPickResult.error ||
          `Unable to cherry-pick to ${target.topicBranch}`;
        return result;
      }

      result.cherryPick = cherryPickResult.result;
      result.cherryPickUrl = formatCherryPickUrl(cherryPickResult.result);

      // If !CreatePr -> continue to next target
      if (!target.createPr) {
        return result;
      }

      const createdPrResult = await CreatePullRequestAsync(
        cherryPickResult.result,
        pullRequestContext,
        target.topicBranch,
        target.targetBranch,
        target.pullRequestName
      );

      if (createdPrResult.error || !createdPrResult.result) {
        result.error =
          createdPrResult.error || "Was not able to complete the PR";
        return result;
      }

      result.pullRequest = createdPrResult.result;
      result.pullRequestUrl = formatPrUrl(createdPrResult.result);

      result.errorExists = false;
      return result;
    } catch (ex) {
      console.error(ex);
      return {};
    }
  }