githubclt

package
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2025 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Overview

Package githubclt provides a github API client.

Index

Constants

View Source
const DefaultHTTPClientTimeout = time.Minute

Variables

View Source
var ErrPullRequestIsClosed = errors.New("pull request is closed")

Functions

func NewErrMergeConflict added in v0.8.1

func NewErrMergeConflict(cause error) error

Types

type CIJobStatus

type CIJobStatus struct {
	Name     string
	Status   CIStatus
	Required bool
	JobURL   string
}

CIJobStatus is the status of a CI job. It represents the status of GitHub CheckRuns and Commit statuses.

type CIStatus

type CIStatus string

CIStatus is the result or current status of a CI job.

const (
	// CIStatusExpected means that the execution of the job is outstanding.
	CIStatusExpected CIStatus = "EXPECTED"
	// CIStatusPending is the status when a job is currently running.
	CIStatusPending CIStatus = "PENDING"
	CIStatusSuccess CIStatus = "SUCCESS"
	CIStatusFailure CIStatus = "FAILURE"
)

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is an github API client. All methods return a goorderr.RetryableError when an operation can be retried. This can be e.g. the case when the API ratelimit is exceeded.

func New

func New(oauthAPItoken string) *Client

New returns a new github api client.

func (*Client) AddLabel

func (clt *Client) AddLabel(ctx context.Context, owner, repo string, pullRequestOrIssueNumber int, label string) error

AddLabel adds a label to Pull-Request or Issue.

func (*Client) BranchIsBehindBase

func (clt *Client) BranchIsBehindBase(ctx context.Context, owner, repo, base, head string) (behind bool, err error)

BranchIsBehindBase returns true if the head reference contains all changes of base.

func (*Client) CreateCommitStatus added in v0.8.0

func (clt *Client) CreateCommitStatus(ctx context.Context, owner, repo, commit string, state StatusState, description, context string) error

CreateCommitStatus submits a status for a commit. state must be one of StatusStatePending, StatusStateSuccess, StatusStateError, StatusStateFailure.

func (*Client) CreateHeadCommitStatus added in v0.8.0

func (clt *Client) CreateHeadCommitStatus(ctx context.Context, owner, repo string, pullRequestNumber int, state StatusState, description, context string) error

CreateCommitStatus submits a status for the HEAD commit of a pull request branch. state must be one of StatusStatePending, StatusStateSuccess, StatusStateError, StatusStateFailure.

func (*Client) CreateIssueComment

func (clt *Client) CreateIssueComment(ctx context.Context, owner, repo string, issueOrPRNr int, comment string) error

CreateIssueComment creates a comment in a issue or pull request

func (*Client) ListPRs added in v0.8.0

func (clt *Client) ListPRs(ctx context.Context, owner, repo string) iter.Seq2[*PR, error]

ListPRs returns an iterator over all open non-draft pull requests of the repository. If an error happens when querying the GitHub GraphQL API, it is passed as second argument to the iterator.

func (*Client) PRIsUptodate

func (clt *Client) PRIsUptodate(ctx context.Context, owner, repo string, pullRequestNumber int) (isUptodate bool, headSHA string, err error)

PullRequestIsUptodateWithBase returns true if the pull request is open and contains all changes from it's base branch. Additionally it returns the SHA of the head commit for which the status was checked. If the PR is closed PullRequestIsClosedError is returned.

func (*Client) ReadyForMerge

func (clt *Client) ReadyForMerge(ctx context.Context, owner, repo string, prNumber int) (*ReadyForMergeStatus, error)

ReadyForMerge returns the review decision and status check rollup for a PR.

The status of checks that are not required is ignored. If a required check failed the returned [ReadyForMerge.CIStatus] is CIStatusFailure. If a check or status has not started yet but is required, it is CIStatusExpected. If a check or status is running and all others succeeded or also still it is CIStatusPending. It is CIStatusSuccess, if no check or status is in pending state and all required ones succeeded.

func (*Client) RemoveLabel

func (clt *Client) RemoveLabel(ctx context.Context, owner, repo string, pullRequestOrIssueNumber int, label string) error

RemoveLabel removes a label from a Pull-Request or issue. If the issue or PR does not have the label, the operation succeeds.

func (*Client) UpdateBranch

func (clt *Client) UpdateBranch(ctx context.Context, owner, repo string, pullRequestNumber int) (*UpdateBranchResult, error)

UpdateBranch schedules merging the base-branch into a pull request branch. If the PR contains all changes of it's base branch, false is returned for changed If it's not up-to-date and updating the PR was scheduled at github, true is returned for changed and scheduled. If the PR was updated while the method was executed, a goorderr.RetryableError is returned and the operation can be retried. If the branch can not be updated automatically because of a merge conflict, an ErrMergeConflict is returned

type ErrMergeConflict added in v0.8.1

type ErrMergeConflict struct {
	Err error
}

func (*ErrMergeConflict) Error added in v0.8.1

func (e *ErrMergeConflict) Error() string

func (*ErrMergeConflict) Unwrap added in v0.8.1

func (e *ErrMergeConflict) Unwrap() error

type PR added in v0.8.0

type PR struct {
	Number           int
	Branch           string
	BaseBranch       string
	HeadCommit       string
	Author           string
	Title            string
	Link             string
	Statuses         []*Status
	Labels           []string
	AutoMergeEnabled bool
}

type PageInfo added in v0.8.0

type PageInfo struct {
	EndCursor   githubv4.String
	HasNextPage bool
}

type ReadyForMergeStatus

type ReadyForMergeStatus struct {
	ReviewDecision ReviewDecision
	CIStatus       CIStatus
	Statuses       []*CIJobStatus
	Commit         string
}

ReadyForMergeStatus represent the information deciding if a pull request is ready to be merged. It contains the review decision and CI job results.

type ReviewDecision

type ReviewDecision string

ReviewDecision is the result of a pull request review.

type Status added in v0.8.0

type Status struct {
	Context string
	State   StatusState
}

type StatusState added in v0.8.0

type StatusState string
const (
	StatusStatePending StatusState = "pending"
	StatusStateSuccess StatusState = "success"
	StatusStateError   StatusState = "error"
	StatusStateFailure StatusState = "failure"
)

type UpdateBranchResult

type UpdateBranchResult struct {
	Changed      bool
	Scheduled    bool
	HeadCommitID string
}

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL