Documentation ¶
Overview ¶
Package gogh manages GitHub repositories for the local directory structures.
Index ¶
- Constants
- Variables
- func CreateLocalProject(_ context.Context, project Project, remoteURL string, _ *LocalCreateOption) error
- func DeleteLocalProject(_ context.Context, project Project, _ *LocalDeleteOption) error
- func GetDefaultRemoteURLFromLocalProject(_ context.Context, project Project) (string, error)
- func GetRemoteURLsFromLocalProject(_ context.Context, project Project, name string) ([]string, error)
- func SetRemoteURLsOnLocalProject(_ context.Context, project Project, remotes map[string][]string) error
- func ValidateHost(h string) error
- func ValidateName(name string) error
- func ValidateOwner(owner string) error
- type ErrInvalidHost
- type ErrInvalidName
- type ErrInvalidOwner
- type LocalCloneOption
- type LocalController
- func (l *LocalController) Clone(ctx context.Context, spec Spec, server Server, opt *LocalCloneOption) (Project, error)
- func (l *LocalController) Create(ctx context.Context, spec Spec, opt *LocalCreateOption) (Project, error)
- func (l *LocalController) Delete(ctx context.Context, spec Spec, opt *LocalDeleteOption) error
- func (l *LocalController) GetRemoteURLs(ctx context.Context, spec Spec, name string) ([]string, error)
- func (l *LocalController) List(ctx context.Context, opt *LocalListOption) ([]Project, error)
- func (l *LocalController) SetRemoteSpecs(ctx context.Context, spec Spec, remotes map[string][]Spec) error
- func (l *LocalController) SetRemoteURLs(ctx context.Context, spec Spec, remotes map[string][]string) error
- func (l *LocalController) Walk(ctx context.Context, opt *LocalWalkOption, walkFn LocalWalkFunc) error
- type LocalCreateOption
- type LocalDeleteOption
- type LocalListOption
- type LocalWalkFunc
- type LocalWalkOption
- type OrderDirection
- type Project
- func (p Project) CheckEntity() error
- func (p Project) FullFilePath() string
- func (p Project) FullLevels() []string
- func (p Project) Host() string
- func (p Project) Name() string
- func (p Project) Owner() string
- func (p Project) RelFilePath() string
- func (p Project) RelLevels() []string
- func (p Project) RelPath() string
- func (p Project) Root() string
- type RemoteController
- func (c *RemoteController) Create(ctx context.Context, name string, option *RemoteCreateOption) (Repository, error)
- func (c *RemoteController) CreateFromTemplate(ctx context.Context, templateOwner, templateName, name string, ...) (Repository, error)
- func (c *RemoteController) Delete(ctx context.Context, owner string, name string, _ *RemoteDeleteOption) error
- func (c *RemoteController) Fork(ctx context.Context, owner string, name string, option *RemoteForkOption) (Repository, error)
- func (c *RemoteController) Get(ctx context.Context, owner string, name string, _ *RemoteGetOption) (Repository, error)
- func (c *RemoteController) List(ctx context.Context, option *RemoteListOption) (allSpecs []Repository, _ error)
- func (c *RemoteController) ListAsync(ctx context.Context, option *RemoteListOption) (<-chan Repository, <-chan error)
- type RemoteCreateFromTemplateOption
- type RemoteCreateOption
- type RemoteDeleteOption
- type RemoteForkOption
- type RemoteGetOption
- type RemoteListOption
- type Repository
- type RepositoryOrderField
- type RepositoryRelation
- type Server
- type Servers
- func (s *Servers) Default() (Server, error)
- func (s *Servers) Find(host string) (Server, error)
- func (s *Servers) List() (list []Server, _ error)
- func (s Servers) MarshalYAML() (interface{}, error)
- func (s *Servers) Remove(host string) error
- func (s *Servers) Set(host, user, token string) error
- func (s *Servers) SetDefault(host string) error
- func (s *Servers) UnmarshalYAML(unmarshaler func(interface{}) error) error
- type Spec
- type SpecParser
Constants ¶
const ( RepositoryRelationOwner = RepositoryRelation("owner") RepositoryRelationOrganizationMember = RepositoryRelation("organizationMember") RepositoryRelationCollaborator = RepositoryRelation("collaborator") )
const (
DefaultHost = github.DefaultHost
)
const DefaultRootDirName = "Projects"
const (
RepositoryListMaxLimitPerPage = 100
)
Variables ¶
var ( ErrEmptyHost = ErrInvalidHost("empty host") ErrEmptyOwner = ErrInvalidOwner("empty owner") ErrEmptyName = ErrInvalidName("empty name") )
var ( ErrNoServer = errors.New("no server registered") ErrServerNotFound = errors.New("server not found") ErrUnremovableServer = errors.New("default server is not able to be removed") )
var AllOrderDirection = githubv4.AllOrderDirection
var AllRepositoryOrderField = githubv4.AllRepositoryOrderField
var AllRepositoryRelation = []RepositoryRelation{ RepositoryRelationOwner, RepositoryRelationOrganizationMember, RepositoryRelationCollaborator, }
var (
ErrTooManySlashes = errors.New("too many slashes")
)
Functions ¶
func CreateLocalProject ¶ added in v2.3.1
func DeleteLocalProject ¶ added in v2.3.1
func DeleteLocalProject(_ context.Context, project Project, _ *LocalDeleteOption) error
func GetDefaultRemoteURLFromLocalProject ¶ added in v2.3.1
func GetRemoteURLsFromLocalProject ¶ added in v2.3.1
func SetRemoteURLsOnLocalProject ¶ added in v2.3.1
func ValidateHost ¶
func ValidateName ¶
func ValidateOwner ¶
Types ¶
type ErrInvalidHost ¶
type ErrInvalidHost string
func (ErrInvalidHost) Error ¶
func (e ErrInvalidHost) Error() string
type ErrInvalidName ¶
type ErrInvalidName string
func (ErrInvalidName) Error ¶
func (e ErrInvalidName) Error() string
type ErrInvalidOwner ¶
type ErrInvalidOwner string
func (ErrInvalidOwner) Error ¶
func (e ErrInvalidOwner) Error() string
type LocalCloneOption ¶
type LocalCloneOption struct {
Alias *Spec
}
type LocalController ¶
type LocalController struct {
// contains filtered or unexported fields
}
func NewLocalController ¶
func NewLocalController(root string) *LocalController
func (*LocalController) Clone ¶
func (l *LocalController) Clone(ctx context.Context, spec Spec, server Server, opt *LocalCloneOption) (Project, error)
func (*LocalController) Create ¶
func (l *LocalController) Create(ctx context.Context, spec Spec, opt *LocalCreateOption) (Project, error)
func (*LocalController) Delete ¶
func (l *LocalController) Delete(ctx context.Context, spec Spec, opt *LocalDeleteOption) error
func (*LocalController) GetRemoteURLs ¶
func (*LocalController) List ¶
func (l *LocalController) List(ctx context.Context, opt *LocalListOption) ([]Project, error)
func (*LocalController) SetRemoteSpecs ¶ added in v2.1.0
func (*LocalController) SetRemoteURLs ¶
func (*LocalController) Walk ¶
func (l *LocalController) Walk(ctx context.Context, opt *LocalWalkOption, walkFn LocalWalkFunc) error
type LocalCreateOption ¶
type LocalCreateOption struct { }
type LocalDeleteOption ¶
type LocalDeleteOption struct{}
type LocalListOption ¶
type LocalListOption struct {
Query string
}
type LocalWalkFunc ¶
type LocalWalkOption ¶
type LocalWalkOption struct {
Query string
}
type OrderDirection ¶ added in v2.2.0
type OrderDirection = githubv4.OrderDirection
type Project ¶
type Project struct {
// contains filtered or unexported fields
}
Project is the location of a repository in the local. It is a valid location, that never means "exist".
func NewProject ¶
func (Project) CheckEntity ¶
CheckEntity checks the project is exist in the local file-system.
func (Project) FullFilePath ¶
func (Project) FullLevels ¶
func (Project) RelFilePath ¶
type RemoteController ¶
type RemoteController struct {
// contains filtered or unexported fields
}
func NewRemoteController ¶
func NewRemoteController(adaptor github.Adaptor) *RemoteController
func (*RemoteController) Create ¶
func (c *RemoteController) Create(ctx context.Context, name string, option *RemoteCreateOption) (Repository, error)
func (*RemoteController) CreateFromTemplate ¶ added in v2.1.4
func (c *RemoteController) CreateFromTemplate(ctx context.Context, templateOwner, templateName, name string, option *RemoteCreateFromTemplateOption) (Repository, error)
func (*RemoteController) Delete ¶
func (c *RemoteController) Delete(ctx context.Context, owner string, name string, _ *RemoteDeleteOption) error
func (*RemoteController) Fork ¶
func (c *RemoteController) Fork(ctx context.Context, owner string, name string, option *RemoteForkOption) (Repository, error)
func (*RemoteController) Get ¶
func (c *RemoteController) Get(ctx context.Context, owner string, name string, _ *RemoteGetOption) (Repository, error)
func (*RemoteController) List ¶
func (c *RemoteController) List(ctx context.Context, option *RemoteListOption) (allSpecs []Repository, _ error)
func (*RemoteController) ListAsync ¶ added in v2.0.10
func (c *RemoteController) ListAsync(ctx context.Context, option *RemoteListOption) (<-chan Repository, <-chan error)
type RemoteCreateFromTemplateOption ¶ added in v2.1.4
type RemoteCreateOption ¶
type RemoteCreateOption struct { Organization string Description string Homepage string Private bool LicenseTemplate string GitignoreTemplate string TeamID int64 IsTemplate bool DisableDownloads bool DisableWiki bool AutoInit bool DisableProjects bool DisableIssues bool PreventSquashMerge bool PreventMergeCommit bool PreventRebaseMerge bool DeleteBranchOnMerge bool }
func (*RemoteCreateOption) GetOrganization ¶
func (o *RemoteCreateOption) GetOrganization() string
type RemoteDeleteOption ¶
type RemoteDeleteOption struct{}
type RemoteForkOption ¶
type RemoteForkOption struct { // Organization is the name of the organization that owns the repository. Organization string }
func (*RemoteForkOption) GetOptions ¶
func (o *RemoteForkOption) GetOptions() *github.RepositoryCreateForkOptions
type RemoteGetOption ¶
type RemoteGetOption struct{}
type RemoteListOption ¶
type RemoteListOption struct { Private *bool Limit *int IsFork *bool Order OrderDirection Sort RepositoryOrderField Relation []RepositoryRelation }
func (*RemoteListOption) GetOptions ¶
func (o *RemoteListOption) GetOptions() *github.RepositoryListOptions
type Repository ¶ added in v2.2.0
type Repository struct { UpdatedAt time.Time `json:"updatedAt"` Parent *Spec `json:"parent,omitempty"` Spec Spec `json:"spec"` URL string `json:"url"` Description string `json:"description,omitempty"` Homepage string `json:"homepage,omitempty"` Language string `json:"language,omitempty"` Archived bool `json:"archived,omitempty"` Private bool `json:"private,omitempty"` IsTemplate bool `json:"isTemplate,omitempty"` Fork bool `json:"fork,omitempty"` }
func (Repository) Host ¶ added in v2.2.0
func (r Repository) Host() string
func (Repository) Name ¶ added in v2.2.0
func (r Repository) Name() string
func (Repository) Owner ¶ added in v2.2.0
func (r Repository) Owner() string
type RepositoryOrderField ¶ added in v2.2.0
type RepositoryOrderField = githubv4.RepositoryOrderField
type RepositoryRelation ¶ added in v2.2.0
type RepositoryRelation string
type Servers ¶
type Servers struct {
// contains filtered or unexported fields
}
func NewServers ¶
NewServers will build Spec with a default server and alternative servers.
func (Servers) MarshalYAML ¶
func (*Servers) SetDefault ¶
func (*Servers) UnmarshalYAML ¶
type Spec ¶
type Spec struct {
// contains filtered or unexported fields
}
Spec describes which project is in a root.
func ParseSiblingSpec ¶ added in v2.1.4
ParseSiblingSpec parses string as a repository specification in the same host and same owner.
func (Spec) MarshalJSON ¶ added in v2.2.0
func (*Spec) UnmarshalJSON ¶ added in v2.2.0
type SpecParser ¶
type SpecParser struct {
// contains filtered or unexported fields
}
SpecParser will parse any string as a Spec.
If it is clear that the string has host, user and name explicitly, use "NewSpec" instead to build Spec.
func NewSpecParser ¶
func NewSpecParser(servers *Servers) *SpecParser
NewSpecParser will build Spec with a default server and alternative servers.
func (*SpecParser) Parse ¶
func (p *SpecParser) Parse(s string) (Spec, Server, error)
Parse a string and build a Spec.
If the string does not have a host or a user explicitly, they will be replaced with a default server.
func (*SpecParser) ParseWithAlias ¶ added in v2.1.1
ParseWithAlias parses string as a Spec and following alias. We can specify an alias with following '='(equal) and the alias.
If it's not specified, alias will be nil value. If it's specified a value which equals to the spec, alias will be nil value.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
internal
|
|
github
Package github provides GitHub API v3 adaptor
|
Package github provides GitHub API v3 adaptor |
github_mock
Package github_mock is a generated GoMock package.
|
Package github_mock is a generated GoMock package. |
githubv4
Package githubv4 provides GitHub API v4 adaptor
|
Package githubv4 provides GitHub API v4 adaptor |
Package view is the view layer of the gogh command.
|
Package view is the view layer of the gogh command. |
repotab
Package repotab provides a formatter which show repositories as a table in CLI
|
Package repotab provides a formatter which show repositories as a table in CLI |