Documentation
¶
Overview ¶
Package github provides idiomatic Go APIs for accessing basic GitHub issue operations.
The entire GitHub API can be accessed by using the Client with GraphQL schema from rsc.io/github/schema.
Package github provides idiomatic Go APIs for accessing basic GitHub issue operations.
The entire GitHub API can be accessed by using the Client with GraphQL schema from rsc.io/github/schema.
Index ¶
- type Client
- func (c *Client) AddIssueComment(issue *Issue, text string) error
- func (c *Client) AddIssueLabels(issue *Issue, labels ...*Label) error
- func (c *Client) CloseIssue(issue *Issue) error
- func (c *Client) CreateIssue(repo *Repo, title, body string, extra ...any) (*Issue, error)
- func (c *Client) DeleteIssue(issue *Issue) error
- func (c *Client) DeleteProjectItem(project *Project, item *ProjectItem) error
- func (c *Client) Discussions(org, repo string) ([]*Discussion, error)
- func (c *Client) EditIssueComment(comment *IssueComment, body string) error
- func (c *Client) GraphQLMutation(query string, vars Vars) (*schema.Mutation, error)
- func (c *Client) GraphQLQuery(query string, vars Vars) (*schema.Query, error)
- func (c *Client) Issue(org, repo string, n int) (*Issue, error)
- func (c *Client) IssueComments(issue *Issue) ([]*IssueComment, error)
- func (c *Client) ProjectItems(p *Project) ([]*ProjectItem, error)
- func (c *Client) Projects(org, query string) ([]*Project, error)
- func (c *Client) RemilestoneIssue(issue *Issue, milestone *Milestone) error
- func (c *Client) RemoveIssueLabels(issue *Issue, labels ...*Label) error
- func (c *Client) ReopenIssue(issue *Issue) error
- func (c *Client) Repo(org, repo string) (*Repo, error)
- func (c *Client) RetitleIssue(issue *Issue, title string) error
- func (c *Client) SearchLabels(org, repo, query string) ([]*Label, error)
- func (c *Client) SearchMilestones(org, repo, query string) ([]*Milestone, error)
- func (c *Client) SetProjectItemFieldOption(project *Project, item *ProjectItem, field *ProjectField, ...) error
- func (c *Client) UserComments(user string) ([]*IssueComment, error)
- type Discussion
- type Issue
- type IssueComment
- type Label
- type Milestone
- type Project
- type ProjectField
- type ProjectFieldOption
- type ProjectFieldValue
- type ProjectItem
- type ProjectIteration
- type ProjectIterations
- type Repo
- type Vars
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
A Client is an authenticated client for accessing the GitHub GraphQL API. Client provides convenient methods for common operations. To build others, see the [GraphQLQuery] and [GraphQLMutation] methods.
func Dial ¶
Dial returns a Client authenticating as user. Authentication credentials are loaded from $HOME/.netrc using the 'api.github.com' entry, which should contain a GitHub personal access token. If user is the empty string, Dial uses the first line in .netrc listed for api.github.com.
For example, $HOME/.netrc might contain:
machine api.github.com login ken password ghp_123456789abcdef123456789abcdef12345
func NewClient ¶ added in v0.4.0
NewClient returns a new client using the given GitHub personal access token (of the form "ghp_....").
func (*Client) AddIssueLabels ¶
func (*Client) CloseIssue ¶
func (*Client) CreateIssue ¶
func (*Client) DeleteIssue ¶ added in v0.4.0
func (*Client) DeleteProjectItem ¶
func (c *Client) DeleteProjectItem(project *Project, item *ProjectItem) error
func (*Client) Discussions ¶ added in v0.4.0
func (c *Client) Discussions(org, repo string) ([]*Discussion, error)
func (*Client) EditIssueComment ¶
func (c *Client) EditIssueComment(comment *IssueComment, body string) error
func (*Client) GraphQLMutation ¶
GraphQLMutation runs a single mutation with the bound variables. For example, to edit an issue comment:
func editComment(commentID, body string) error {
graphql := `
mutation($Comment: ID!, $Body: String!) {
updateIssueComment(input: {id: $Comment, body: $Body}) {
clientMutationId
}
}
`
_, err := c.GraphQLMutation(graphql, Vars{"Comment": commentID, "Body": body})
return err
}
(This is roughly the implementation of the Client.EditIssueComment method.)
func (*Client) GraphQLQuery ¶
GraphQLQuery runs a single query with the bound variables. For example, to look up a repository ID:
func repoID(org, name string) (string, error) {
graphql := `
query($Org: String!, $Repo: String!) {
repository(owner: $Org, name: $Repo) {
id
}
}
`
vars := Vars{"Org": org, "Repo": repo}
q, err := c.GraphQLQuery(graphql, vars)
if err != nil {
return "", err
}
return string(q.Repository.Id), nil
}
(This is roughly the implementation of the Client.Repo method.)
func (*Client) IssueComments ¶
func (c *Client) IssueComments(issue *Issue) ([]*IssueComment, error)
func (*Client) ProjectItems ¶
func (c *Client) ProjectItems(p *Project) ([]*ProjectItem, error)
func (*Client) RemilestoneIssue ¶
func (*Client) RemoveIssueLabels ¶
func (*Client) ReopenIssue ¶
func (*Client) SearchLabels ¶
func (*Client) SearchMilestones ¶
func (*Client) SetProjectItemFieldOption ¶
func (c *Client) SetProjectItemFieldOption(project *Project, item *ProjectItem, field *ProjectField, option *ProjectFieldOption) error
func (*Client) UserComments ¶ added in v0.4.0
func (c *Client) UserComments(user string) ([]*IssueComment, error)
type Discussion ¶ added in v0.4.0
type Issue ¶
type Issue struct {
ID string
Title string
Number int
Closed bool
ClosedAt time.Time
CreatedAt time.Time
LastEditedAt time.Time
Labels []*Label
Milestone *Milestone
Author string
Owner string
Repo string
Body string
URL string
}
func (*Issue) LabelByName ¶
type IssueComment ¶
type Project ¶
type Project struct {
ID string
Closed bool
ClosedAt time.Time
CreatedAt time.Time
UpdatedAt time.Time
Fields []*ProjectField
Number int
Title string
URL string
Org string
}
func (*Project) FieldByName ¶
func (p *Project) FieldByName(name string) *ProjectField
type ProjectField ¶
type ProjectField struct {
Kind string // "field", "iteration", "select"
CreatedAt time.Time
UpdatedAt time.Time
DataType schema.ProjectV2FieldType // TODO
DatabaseID int
ID schema.ID
Name string
Iterations *ProjectIterations
Options []*ProjectFieldOption
}
func (*ProjectField) OptionByName ¶
func (f *ProjectField) OptionByName(name string) *ProjectFieldOption
type ProjectFieldOption ¶
func (*ProjectFieldOption) String ¶
func (o *ProjectFieldOption) String() string
type ProjectFieldValue ¶
type ProjectFieldValue struct {
CreatedAt time.Time
UpdatedAt time.Time
Kind string
ID string
DatabaseID int
Field string
Option *ProjectFieldOption
Date time.Time
Text string
}
func (*ProjectFieldValue) String ¶
func (v *ProjectFieldValue) String() string
type ProjectItem ¶
type ProjectItem struct {
CreatedAt time.Time
DatabaseID int
ID schema.ID
IsArchived bool
Type schema.ProjectV2ItemType
UpdatedAt time.Time
Fields []*ProjectFieldValue
Issue *Issue
}
func (*ProjectItem) FieldByName ¶
func (it *ProjectItem) FieldByName(name string) *ProjectFieldValue
type ProjectIteration ¶
type ProjectIterations ¶
type ProjectIterations struct {
Completed []*ProjectIteration
Active []*ProjectIteration
Days int
StartDay time.Weekday
}
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
minutes
module
|
|
|
minutes2
module
|
|
|
minutes3
module
|
|
|
Issue is a client for reading and updating issues in a GitHub project issue tracker.
|
Issue is a client for reading and updating issues in a GitHub project issue tracker. |
|
Package schema is Go data structures corresponding to the GitHub GraphQL schema.
|
Package schema is Go data structures corresponding to the GitHub GraphQL schema. |