github

package
v0.55.1 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2023 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrAutomergeNotAllowOnRepository = errors.New("automerge is not allowed on repository")
	ErrBadMergeMethod                = errors.New("wrong merge method defined, accepting one of 'squash', 'merge', 'rebase', or ''")
)

Functions

This section is empty.

Types

type ActionSpec added in v0.40.0

type ActionSpec struct {
	// Specifies if automerge is enabled for the new pullrequest
	AutoMerge bool `yaml:",omitempty"`
	// Specifies the Pull Request title
	Title string `yaml:",omitempty"`
	// Specifies user input description used during pull body creation
	Description string `yaml:",omitempty"`
	// Specifies repository labels used for the Pull Request. !! Labels must already exist on the repository
	Labels []string `yaml:",omitempty"`
	// Specifies if a Pull Request is set to draft, default false
	Draft bool `yaml:",omitempty"`
	// Specifies if maintainer can modify pullRequest
	MaintainerCannotModify bool `yaml:",omitempty"`
	// Specifies which merge method is used to incorporate the Pull Request. Accept "merge", "squash", "rebase", or ""
	MergeMethod string `yaml:",omitempty"`
	// Specifies to use the Pull Request title as commit message when using auto merge, only works for "squash" or "rebase"
	UseTitleForAutoMerge bool `yaml:",omitempty"`
	// Specifies if a Pull Request should be sent to the parent of a fork.
	Parent bool `yaml:",omitempty"`
}

ActionSpec specifies the configuration of an action of type "GitHub Pull Request"

func (*ActionSpec) Validate added in v0.40.0

func (s *ActionSpec) Validate() error

Validate ensures that the provided ActionSpec is valid

type Changelog

type Changelog struct {
	Title       string
	Description string
	Report      string
}

Changelog contains various information used to describe target changes

type GitHubClient

type GitHubClient interface {
	Query(ctx context.Context, q interface{}, variables map[string]interface{}) error
	Mutate(ctx context.Context, m interface{}, input githubv4.Input, variables map[string]interface{}) error
}

GitHubClient must be implemented by any GitHub query client (v4 API)

type Github

type Github struct {
	// Spec contains inputs coming from updatecli configuration
	Spec Spec
	// contains filtered or unexported fields
}

GitHub contains settings to interact with GitHub

func New

func New(s Spec, pipelineID string) (*Github, error)

New returns a new valid GitHub object.

func (*Github) Add

func (g *Github) Add(files []string) error

Add run `git add`.

func (*Github) Changelog

func (g *Github) Changelog(version version.Version) (string, error)

Changelog returns a changelog description based on a release name

func (*Github) ChangelogV3 added in v0.49.0

func (g *Github) ChangelogV3(version string) (string, error)

ChangelogV3 returns a changelog description based on a release name using the GitHub api v3 version

func (*Github) Checkout

func (g *Github) Checkout() error

Checkout create and then uses a temporary git branch.

func (*Github) Clean

func (g *Github) Clean() error

Clean deletes github working directory.

func (*Github) Clone

func (g *Github) Clone() (string, error)

Clone run `git clone`.

func (*Github) Commit

func (g *Github) Commit(message string) error

Commit run `git commit`.

func (*Github) GetBranches added in v0.53.0

func (g *Github) GetBranches() (sourceBranch, workingBranch, targetBranch string)

func (*Github) GetChangedFiles

func (g *Github) GetChangedFiles(workingDir string) ([]string, error)

func (*Github) GetDirectory

func (g *Github) GetDirectory() (directory string)

GetDirectory returns the local git repository path.

func (*Github) GetURL added in v0.53.0

func (g *Github) GetURL() string

GetURL returns a "GitHub " git URL

func (*Github) IsRemoteBranchUpToDate added in v0.45.0

func (g *Github) IsRemoteBranchUpToDate() (bool, error)

IsRemoteBranchUpToDate checks if the branch reference name is published on on the default remote

func (*Github) Push

func (g *Github) Push() error

Push run `git push` on the GitHub remote branch if not already created.

func (*Github) PushBranch added in v0.44.0

func (g *Github) PushBranch(branch string) error

PushBranch push tags

func (*Github) PushTag

func (g *Github) PushTag(tag string) error

PushTag push tags

func (*Github) SearchReleases

func (g *Github) SearchReleases(releaseType ReleaseType) (releases []string, err error)

SearchReleases return every releases from the github api ordered by reverse order of created time. Draft and pre-releases are filtered out.

func (*Github) SearchTags

func (g *Github) SearchTags() (tags []string, err error)

SearchTags return every tags from the github api return in reverse order of commit tags.

type GithubHandler

type GithubHandler interface {
	SearchReleases(releaseType ReleaseType) (releases []string, err error)
	SearchTags() (tags []string, err error)
	Changelog(version.Version) (string, error)
}

GithubHandler must be implemented by any GitHub module

type MockGitHubClient

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

func (*MockGitHubClient) Mutate

func (mock *MockGitHubClient) Mutate(ctx context.Context, m interface{}, input githubv4.Input, variables map[string]interface{}) error

func (*MockGitHubClient) Query

func (mock *MockGitHubClient) Query(ctx context.Context, q interface{}, variables map[string]interface{}) error

type PageInfo

type PageInfo struct {
	HasNextPage     bool
	HasPreviousPage bool
	EndCursor       string
	StartCursor     string
}

PageInfo is used for Graphql queries to iterate over pagination

type PullRequest

type PullRequest struct {
	Report string
	Title  string
	// contains filtered or unexported fields
}

func NewAction added in v0.40.0

func NewAction(spec ActionSpec, gh *Github) (PullRequest, error)

func (*PullRequest) CreateAction added in v0.40.0

func (p *PullRequest) CreateAction(report reports.Action) error

func (*PullRequest) EnablePullRequestAutoMerge

func (p *PullRequest) EnablePullRequestAutoMerge() error

EnablePullRequestAutoMerge updates an existing pullrequest with the flag automerge

func (*PullRequest) GetPullRequestLabelsInformation

func (p *PullRequest) GetPullRequestLabelsInformation() ([]repositoryLabelApi, error)

getPullRequestLabelsInformation queries GitHub Api to retrieve every labels assigned to a pullRequest

func (*PullRequest) OpenPullRequest

func (p *PullRequest) OpenPullRequest() error

OpenPullRequest creates a new GitHub Pull Request.

type PullRequestApi

type PullRequestApi struct {
	BaseRefName string
	Body        string
	HeadRefName string
	ID          string
	State       string
	Title       string
	Url         string
	Number      int
}

PullRequest contains multiple fields mapped to GitHub V4 api

type RateLimit

type RateLimit struct {
	Cost      int
	Remaining int
	ResetAt   string
}

RateLimit is a struct that contains GitHub Api limit information

func (*RateLimit) Show

func (a *RateLimit) Show()

Show display GitHub Api limit usage

type ReleaseType added in v0.38.0

type ReleaseType struct {
	// "Draft" enable/disable GitHub draft release
	Draft bool
	// "PreRelease" enable/disable GitHub PreRelease
	PreRelease bool
	// "Release" enable/disable GitHub release
	Release bool
	// "Latest" if set to true will only filter the release flag as latest.
	Latest bool
}

ReleaseType specifies accepted GitHub Release type

func (*ReleaseType) Init added in v0.38.0

func (r *ReleaseType) Init()

func (ReleaseType) IsZero added in v0.38.0

func (r ReleaseType) IsZero() bool

IsZero checks if all release type are set to disable

type Repository added in v0.45.0

type Repository struct {
	ID          string
	Name        string
	Owner       string
	ParentID    string
	ParentName  string
	ParentOwner string
}

Repository contains GitHub repository data

type Spec

type Spec struct {
	// Branch specifies which github branch to work on
	Branch string `yaml:",omitempty"`
	// Directory specifies where the github repository is cloned on the local disk
	Directory string `yaml:",omitempty"`
	// Email specifies which emails to use when creating commits
	Email string `yaml:",omitempty"`
	// Owner specifies repository owner
	Owner string `yaml:",omitempty" jsonschema:"required"`
	// Repository specifies the name of a repository for a specific owner
	Repository string `yaml:",omitempty" jsonschema:"required"`
	// Token specifies the credential used to authenticate with
	Token string `yaml:",omitempty" jsonschema:"required"`
	// URL specifies the default github url in case of GitHub enterprise
	URL string `yaml:",omitempty"`
	// Username specifies the username used to authenticate with GitHub API
	Username string `yaml:",omitempty"`
	// User specifies the user of the git commit messages
	User string `yaml:",omitempty"`
	// GPG key and passphrased used for commit signing
	GPG sign.GPGSpec `yaml:",omitempty"`
	// Force is used during the git push phase to run `git push --force`.
	Force bool `yaml:",omitempty"`
	// CommitMessage represents conventional commit metadata as type or scope, used to generate the final commit message.
	CommitMessage commit.Commit `yaml:",omitempty"`
}

Spec represents the configuration input

func (*Spec) Merge added in v0.28.0

func (gs *Spec) Merge(child interface{}) error

Merge returns nil if it successfully merges the child Spec into target receiver. Please note that child attributes always overrides receiver's

func (*Spec) MergeFromEnv added in v0.28.0

func (gs *Spec) MergeFromEnv(envPrefix string)

MergeFromEnv updates the target receiver with the "non zero-ed" environment variables

func (*Spec) Validate

func (s *Spec) Validate() (errs []error)

Validate verifies if mandatory GitHub parameters are provided and return false if not.

Jump to

Keyboard shortcuts

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