Documentation
¶
Overview ¶
Package github reads the person's GitHub REST budget: the hourly core limit every session, every devctl wait and the person's own developer portal login draw from.
The budget is read from the X-RateLimit headers of a real request, never from /rate_limit: that endpoint is exempt and reported a full budget while real requests were already refused. The request is conditional (the ETag of the last answer), so a 304 costs nothing.
Index ¶
Constants ¶
const ( Open = "OPEN" Merged = "MERGED" Closed = "CLOSED" )
The states of a pull request.
const ( SquashMerged = 0 SquashRed = 1 SquashTimeout = 2 SquashNotApplicable = 3 SquashRefused = 5 SquashTooling = 7 )
The plain squash merge's exit codes and verdicts, devctl pr merge's own (docs/pr-merge.md in giantswarm/devctl), so the gate reads either the same.
const SquashRoute = "plain squash merge"
SquashRoute names the route in the document and the gate's lines.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Budget ¶
type Budget struct {
Resource string `json:"resource"`
Limit int `json:"limit"`
Remaining int `json:"remaining"`
Used int `json:"used"`
Reset time.Time `json:"reset"`
}
Budget is the core rate limit as GitHub reported it.
type Squash ¶ added in v0.31.2
type Squash struct {
GH GH
Repo string
Number int
Timeout time.Duration
Poll time.Duration
Progress io.Writer
Now func() time.Time
Sleep func(time.Duration)
}
Squash is one plain squash merge: the route of a repository devctl does not serve (its GitHub App login reaches the giantswarm organisation and public repositories only), made with the gh CLI's login as the person.
func (Squash) Run ¶ added in v0.31.2
Run waits until the head's checks finished, all green, and squash-merges it through the merge API with that head as the expected one, the subject "<title> (#<n>)", then deletes the head branch. It refuses what devctl refuses before its wait: a draft, a closed, merged or conflicting pull request (3) and another human's (5). Its document says what happened; nothing waits for a release.
type SquashDoc ¶ added in v0.31.2
type SquashDoc struct {
Command string `json:"command"`
Route string `json:"route"`
SchemaVersion int `json:"schemaVersion"`
ExitCode int `json:"exitCode"`
Verdict string `json:"verdict"`
Reason string `json:"reason"`
Repo string `json:"repository"`
Number int `json:"number"`
HeadSha string `json:"headSha,omitempty"`
MergeCommitSha string `json:"mergeCommitSha,omitempty"`
Release *string `json:"release"`
}
SquashDoc is the plain squash merge's JSON document, shaped as devctl pr merge's: the gate parses mergeCommitSha and release alike.