Documentation
¶
Index ¶
- func BuildDiffComment(codeDiff, repoName, baseBranch, oldCommit, newCommit string, sinceJip bool) string
- func BuildStackBlock(prNumbers []int, current int) string
- func BuildStackedPRBody(commitHash, repoFullName string, prNumber int, allPRs []int, commitBody string) string
- func BuildUnavailableDiffComment(repoName, baseBranch, oldCommit, newCommit string) string
- func ParsePushedCommit(commentBody string) string
- func ParseRepoFromURL(url string) (owner, repo string, err error)
- func ParseReviewCommit(prBody string) string
- func WithPushedCommitMarker(body, commit string) string
- type Client
- func (c *Client) CommentOnPR(number int, body string) error
- func (c *Client) CreatePR(head, base, title, body string, draft bool) (*PRInfo, error)
- func (c *Client) GetAuthenticatedUser() (string, error)
- func (c *Client) LookupPRsByBranch(branches []string) (map[string]*PRInfo, error)
- func (c *Client) Owner() string
- func (c *Client) Repo() string
- func (c *Client) RequestReviewers(number int, reviewers []string) error
- func (c *Client) UpdatePR(number int, opts UpdatePROpts) error
- type PRInfo
- type Service
- type UpdatePROpts
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildDiffComment ¶
func BuildDiffComment(codeDiff, repoName, baseBranch, oldCommit, newCommit string, sinceJip bool) string
BuildDiffComment generates a PR comment with interdiff output, using collapsible sections for each file. When sinceJip is true the header reads "Changes since last jip send" (the base is jip's own previous send rather than the current remote head).
func BuildStackBlock ¶
BuildStackBlock generates a markdown stack navigation block showing the current PR's position in the stack.
func BuildStackedPRBody ¶
func BuildStackedPRBody(commitHash, repoFullName string, prNumber int, allPRs []int, commitBody string) string
BuildStackedPRBody generates the full PR body for a stacked PR. For a single PR (len(allPRs) <= 1), only the commitBody is returned.
func BuildUnavailableDiffComment ¶ added in v1.4.0
BuildUnavailableDiffComment generates a PR comment for the case where --diff-since-jip knows the previous jip-pushed commit but cannot find it locally (e.g. it was pushed from another machine and not fetched). It documents that the diff could not be generated and points at the remote.
func ParsePushedCommit ¶ added in v1.4.0
ParsePushedCommit extracts the commit hash from a jip pushed-commit marker in a PR body, or "" if the body has no marker or the value is not a valid hex hash. Uses LastIndex so that if multiple markers exist the newest one wins.
func ParseRepoFromURL ¶
ParseRepoFromURL extracts owner and repo name from a GitHub remote URL. Supports both HTTPS and SSH formats.
func ParseReviewCommit ¶ added in v1.4.0
ParseReviewCommit extracts the commit hash from the "Only review commit" link that BuildStackedPRBody writes into a stacked PR's body, or "" if the body has no such link (e.g. a standalone, non-stacked PR).
Only the line that starts with "Only review commit" is searched, and the hash is extracted from the exact /pull/<number>/commits/<hash> URL shape to avoid matching unrelated URLs in user-written descriptions.
func WithPushedCommitMarker ¶ added in v1.4.0
WithPushedCommitMarker ensures the PR body contains exactly one pushed-commit marker reflecting commit. If the body already has that exact commit, it is returned unchanged. Otherwise any existing markers are stripped and the new marker is appended.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps go-github for PR mutations and GraphQL queries.
func NewClient ¶
NewClient creates a GitHub client for the given repository. remoteURL is the git remote URL (e.g. https://github.com/owner/repo.git), from which owner and repo are parsed. If apiURL is non-empty, it is used as the GitHub API base URL (for GitHub Enterprise or testing).
func (*Client) CommentOnPR ¶
CommentOnPR posts a comment on a pull request.
func (*Client) GetAuthenticatedUser ¶
GetAuthenticatedUser returns the login of the authenticated user.
func (*Client) LookupPRsByBranch ¶
LookupPRsByBranch queries GitHub's GraphQL API for open PRs matching the given head branch names. Returns a map from branch name to PRInfo for branches that have an open PR.
func (*Client) RequestReviewers ¶
RequestReviewers adds reviewers to a pull request.
type PRInfo ¶
type PRInfo struct {
Number int `json:"number"`
State string `json:"state"`
URL string `json:"url"`
Title string `json:"title"`
Body string `json:"body"`
HeadRefName string `json:"headRefName"`
BaseRefName string `json:"baseRefName"`
IsDraft bool `json:"isDraft"`
}
PRInfo holds the essential fields of a pull request.
type Service ¶
type Service interface {
CreatePR(head, base, title, body string, draft bool) (*PRInfo, error)
UpdatePR(number int, opts UpdatePROpts) error
CommentOnPR(number int, body string) error
GetAuthenticatedUser() (string, error)
RequestReviewers(number int, reviewers []string) error
LookupPRsByBranch(branches []string) (map[string]*PRInfo, error)
Owner() string
Repo() string
}
Service defines the GitHub operations needed by the send pipeline.