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) AddToStack(stackNumber int, prNumbers []int) (*Stack, error)
- 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) CreateStack(prNumbers []int) (*Stack, error)
- func (c *Client) FindStackForPR(number int) (*Stack, 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) StacksEnabled() (bool, error)
- func (c *Client) Unstack(stackNumber int) (dissolved bool, err error)
- func (c *Client) UpdatePR(number int, opts UpdatePROpts) error
- type PRInfo
- type Service
- type Stack
- type StackBase
- type StackPR
- 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) AddToStack ¶ added in v1.6.0
AddToStack appends pull requests to the top of an existing stack. Only the new PR numbers (the delta) are given, ordered from the current top upward. The stacks API is append-only: reordering or mid-stack changes require Unstack followed by CreateStack.
func (*Client) CommentOnPR ¶
CommentOnPR posts a comment on a pull request.
func (*Client) CreateStack ¶ added in v1.6.0
CreateStack creates a native GitHub stack from PR numbers ordered bottom to top. The PRs must already form a valid base-to-head chain (each PR based on the head branch of the one below), and there must be at least two.
func (*Client) FindStackForPR ¶ added in v1.6.0
FindStackForPR returns the stack containing the given PR, or nil when the PR is not part of any stack.
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.
func (*Client) StacksEnabled ¶ added in v1.6.0
StacksEnabled reports whether the stacked-PRs preview is enabled for the repository. The stacks endpoints answer 404 when it is not.
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
// Native GitHub stacked-PRs (private preview) operations.
StacksEnabled() (bool, error)
FindStackForPR(number int) (*Stack, error)
CreateStack(prNumbers []int) (*Stack, error)
AddToStack(stackNumber int, prNumbers []int) (*Stack, error)
Unstack(stackNumber int) (dissolved bool, err error)
}
Service defines the GitHub operations needed by the send pipeline.
type Stack ¶ added in v1.6.0
type Stack struct {
Number int `json:"number"`
URL string `json:"url"`
Open bool `json:"open"`
Base StackBase `json:"base"`
PullRequests []StackPR `json:"pull_requests"`
}
Stack is a native GitHub stack of pull requests. Number is the human-facing stack number used in API paths; PullRequests is ordered bottom to top.
func (*Stack) OpenPRNumbers ¶ added in v1.6.0
OpenPRNumbers returns the numbers of the stack's open, unmerged PRs, bottom to top. Merged PRs stay listed in a stack after a partial merge, so callers comparing against a local stack must ignore them.
type StackBase ¶ added in v1.6.0
type StackBase struct {
Ref string `json:"ref"`
}
StackBase describes the base ref of a stack.