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 FalsePtr(b bool) *bool
- func GetDefaultRemoteURLFromLocalProject(_ context.Context, project Project) (string, error)
- func GetRemoteURLsFromLocalProject(_ context.Context, project Project, name string) ([]string, error)
- func NilablePtr[T comparable](v T) *T
- func Ptr[T any](v T) *T
- 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 Host
- type LocalCloneOption
- type LocalController
- func (l *LocalController) Clone(ctx context.Context, spec Spec, token string, 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) Exist(ctx context.Context, spec Spec, opt *LocalExistOption) (bool, 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 LocalExistOption
- type LocalListOption
- type LocalWalkFunc
- type LocalWalkOption
- type Map
- type OrderDirection
- type Owner
- 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)
- func (c *RemoteController) Me(ctx context.Context) (string, error)
- type RemoteCreateFromTemplateOption
- type RemoteCreateOption
- type RemoteDeleteOption
- type RemoteForkOption
- type RemoteGetOption
- type RemoteListOption
- type Repository
- type RepositoryOrderField
- type RepositoryRelation
- type Spec
- type SpecParser
- type TokenEntry
- type TokenHost
- type TokenManager
- func (t *TokenManager) Delete(host, owner string)
- func (t TokenManager) Entries() []TokenEntry
- func (t TokenManager) Get(host, owner string) github.Token
- func (t TokenManager) GetDefaultKey() (Host, Owner)
- func (t TokenManager) Has(host, owner string) bool
- func (t *TokenManager) Set(hostName, ownerName string, token github.Token)
- func (t *TokenManager) SetDefaultHost(hostName string) error
- func (t *TokenManager) SetDefaultOwner(hostName, ownerName string) error
Constants ¶
const ( RepositoryRelationOwner = RepositoryRelation("owner") RepositoryRelationOrganizationMember = RepositoryRelation("organizationMember") RepositoryRelationCollaborator = RepositoryRelation("collaborator") )
const DefaultHost = "github.com"
const DefaultRootDirName = "Projects"
const (
RepositoryListMaxLimitPerPage = 100
)
Variables ¶
var ( ErrEmptyHost = ErrInvalidHost("empty host") ErrEmptyOwner = ErrInvalidOwner("empty owner") ErrEmptyName = ErrInvalidName("empty name") )
var AllOrderDirection = []githubv4.OrderDirection{ githubv4.OrderDirectionAsc, githubv4.OrderDirectionDesc, }
var AllRepositoryOrderField = []githubv4.RepositoryOrderField{ githubv4.RepositoryOrderFieldCreatedAt, githubv4.RepositoryOrderFieldName, githubv4.RepositoryOrderFieldPushedAt, githubv4.RepositoryOrderFieldStargazers, githubv4.RepositoryOrderFieldUpdatedAt, }
var AllRepositoryRelation = []RepositoryRelation{ RepositoryRelationOwner, RepositoryRelationOrganizationMember, RepositoryRelationCollaborator, }
var (
ErrTooManySlashes = errors.New("too many slashes")
)
Functions ¶
func CreateLocalProject ¶
func DeleteLocalProject ¶
func DeleteLocalProject(_ context.Context, project Project, _ *LocalDeleteOption) error
func NilablePtr ¶
func NilablePtr[T comparable](v T) *T
NilablePtr converts a value of any type to a pointer, returning nil if the value is the zero value.
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, token string, 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) Exist ¶
func (l *LocalController) Exist( ctx context.Context, spec Spec, opt *LocalExistOption, ) (bool, error)
func (*LocalController) GetRemoteURLs ¶
func (*LocalController) List ¶
func (l *LocalController) List(ctx context.Context, opt *LocalListOption) ([]Project, error)
func (*LocalController) SetRemoteSpecs ¶
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 LocalExistOption ¶
type LocalExistOption struct { }
type LocalListOption ¶
type LocalListOption struct {
Query string
}
type LocalWalkFunc ¶
type LocalWalkOption ¶
type LocalWalkOption struct {
Query string
}
type Map ¶
type Map[TKey comparable, TVal any] map[TKey]TVal
type OrderDirection ¶
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 ¶
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 ¶
func (c *RemoteController) ListAsync( ctx context.Context, option *RemoteListOption, ) (<-chan Repository, <-chan error)
type RemoteCreateOption ¶
type RemoteCreateOption struct { Description string Homepage string Organization string LicenseTemplate string GitignoreTemplate string TeamID int64 DisableDownloads bool IsTemplate bool Private 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 IsFork *bool IsArchived *bool Order OrderDirection Sort RepositoryOrderField Relation []RepositoryRelation Limit int }
func (*RemoteListOption) GetOptions ¶
func (o *RemoteListOption) GetOptions() *github.RepositoryListOptions
type Repository ¶
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 ¶
func (r Repository) Host() string
func (Repository) Name ¶
func (r Repository) Name() string
func (Repository) Owner ¶
func (r Repository) Owner() string
type RepositoryOrderField ¶
type RepositoryOrderField = githubv4.RepositoryOrderField
type RepositoryRelation ¶
type RepositoryRelation string
func (RepositoryRelation) String ¶
func (r RepositoryRelation) String() string
type Spec ¶
type Spec struct {
// contains filtered or unexported fields
}
Spec describes which project is in a root.
func ParseSiblingSpec ¶
ParseSiblingSpec parses string as a repository specification in the same host and same owner.
func (Spec) MarshalJSON ¶
func (*Spec) UnmarshalJSON ¶
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(defaultHost, defaultOwner string) SpecParser
NewSpecParser will build Spec with a default host and default owner.
func (SpecParser) Parse ¶
func (p SpecParser) Parse(s string) (Spec, 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 host and default owner.
func (SpecParser) ParseWithAlias ¶
func (p SpecParser) ParseWithAlias(s string) (Spec, *Spec, error)
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.
type TokenEntry ¶
func (TokenEntry) String ¶
func (e TokenEntry) String() string
type TokenHost ¶
type TokenManager ¶
type TokenManager struct { Hosts Map[Host, *TokenHost] `yaml:"hosts,omitempty"` DefaultHost Host `yaml:"default_host,omitempty"` }
func (*TokenManager) Delete ¶
func (t *TokenManager) Delete(host, owner string)
func (TokenManager) Entries ¶
func (t TokenManager) Entries() []TokenEntry
func (TokenManager) GetDefaultKey ¶
func (t TokenManager) GetDefaultKey() (Host, Owner)
func (TokenManager) Has ¶
func (t TokenManager) Has(host, owner string) bool
func (*TokenManager) Set ¶
func (t *TokenManager) Set(hostName, ownerName string, token github.Token)
func (*TokenManager) SetDefaultHost ¶
func (t *TokenManager) SetDefaultHost(hostName string) error
func (*TokenManager) SetDefaultOwner ¶
func (t *TokenManager) SetDefaultOwner(hostName, ownerName string) error
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 |