func FindPRCommand()

in cmd/find_pr.go [25:80]


func FindPRCommand(appFs afero.Fs) *cobra.Command {
	findPRCommand := &cobra.Command{
		Use:   "find-pr",
		Short: "Find the original PR that included a commit",
		Long:  findPRLongDescription,
		Args: func(cmd *cobra.Command, args []string) error {
			if len(args) < 1 {
				return errListPRCmdMissingCommitHash
			}

			return nil
		},
		RunE: func(cmd *cobra.Command, args []string) error {
			hc, err := github.GetHTTPClient(appFs)
			if err != nil {
				return fmt.Errorf("cannot initialize http client: %w", err)
			}

			c := github.NewClient(hc)

			repo, err := cmd.Flags().GetString("repo")
			if err != nil {
				return fmt.Errorf("repo flag malformed: %w", err)
			}

			owner, err := cmd.Flags().GetString("owner")
			if err != nil {
				return fmt.Errorf("owner flag malformed: %w", err)
			}

			commit := args[0]
			ctx := context.Background()

			res, err := github.FindPR(ctx, c, owner, repo, commit)
			if err != nil {
				return fmt.Errorf("failed listing prs with commit: %w", err)
			}

			respJSON, err := json.Marshal(res)
			if err != nil {
				return fmt.Errorf("failed marshalling JSON output: %w", err)
			}

			cmd.Println(string(respJSON))

			return nil
		},
	}

	findPRCommand.Flags().String("repo", defaultRepo, "target repository")
	findPRCommand.Flags().String("owner", defaultOwner, "target repository owner")

	findPRCommand.Flags().VisitAll(viperOverrides(findPRCommand))

	return findPRCommand
}