repository_manager

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2025 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModuleName       = "RepositoryManager"
	DefaultReposPath = "./git/repos"
)

Variables

View Source
var (
	// ErrEmptyName indicates that the name parameter is empty
	ErrEmptyName = errors.New("name cannot be empty")

	// ErrInvalidName indicates that the name contains invalid characters
	ErrInvalidName = errors.New("invalid name: must contain only alphanumeric characters, dashes, underscores, and dots")
)

Common errors

View Source
var (
	// ErrRepositoryNameEmpty indicates repository name is empty
	ErrRepositoryNameEmpty = errors.New("repository name cannot be empty")

	// ErrRepositoryInvalidName indicates repository name is invalid
	ErrRepositoryInvalidName = errors.New("invalid repository name: must contain only alphanumeric characters, dashes, underscores, and dots")
)

Repository errors

View Source
var (
	// ErrGroupInvalidName indicates group name is invalid
	ErrGroupInvalidName = errors.New("invalid group name: must contain only alphanumeric characters, dashes, underscores, and dots")
)

Group errors

View Source
var (
	// ErrTagNameEmpty indicates tag name is empty
	ErrTagNameEmpty = errors.New("tag name cannot be empty")
)

Tag errors

Functions

func Module

func Module(scope string) fx.Option

func NewGroupAlreadyExistsError

func NewGroupAlreadyExistsError(name string) error

NewGroupAlreadyExistsError creates a group already exists error

func NewGroupIsRepositoryError

func NewGroupIsRepositoryError(name string) error

NewGroupIsRepositoryError creates an error when a group path is actually a repository

func NewGroupNotEmptyError

func NewGroupNotEmptyError(name string) error

NewGroupNotEmptyError creates a group not empty error

func NewGroupNotFoundError

func NewGroupNotFoundError(name string) error

NewGroupNotFoundError creates a group not found error

func NewNotAGroupError

func NewNotAGroupError(name string) error

NewNotAGroupError creates a not a group error

func NewRepositoryAlreadyExistsError

func NewRepositoryAlreadyExistsError(name string) error

NewRepositoryAlreadyExistsError creates a repository already exists error

func NewRepositoryNotFoundError

func NewRepositoryNotFoundError(name string) error

NewRepositoryNotFoundError creates a repository not found error

func NewRepositoryWithNameExistsError

func NewRepositoryWithNameExistsError(name string) error

NewRepositoryWithNameExistsError creates an error when repository conflicts with group name

func NewTagNotFoundError

func NewTagNotFoundError(name string) error

NewTagNotFoundError creates a tag not found error

func WrapCommitNotFoundError

func WrapCommitNotFoundError(err error) error

WrapCommitNotFoundError wraps an error when commit is not found

func WrapCreateGroupDirError

func WrapCreateGroupDirError(err error) error

WrapCreateGroupDirError wraps an error when creating group directory

func WrapCreateParentDirsError

func WrapCreateParentDirsError(err error) error

WrapCreateParentDirsError wraps an error when creating parent directories

func WrapDeleteGroupDirError

func WrapDeleteGroupDirError(err error) error

WrapDeleteGroupDirError wraps an error when deleting group directory

func WrapDeleteRepoDirError

func WrapDeleteRepoDirError(err error) error

WrapDeleteRepoDirError wraps an error when deleting repository directory

func WrapDeleteTagError

func WrapDeleteTagError(err error) error

WrapDeleteTagError wraps an error when deleting tag

func WrapEncodeTagError

func WrapEncodeTagError(err error) error

WrapEncodeTagError wraps an error when encoding tag object

func WrapGetHEADError

func WrapGetHEADError(err error) error

WrapGetHEADError wraps an error when getting HEAD

func WrapGetRepoConfigError

func WrapGetRepoConfigError(err error) error

WrapGetRepoConfigError wraps an error when getting repository config

func WrapGetTagsError

func WrapGetTagsError(err error) error

WrapGetTagsError wraps an error when getting tags

func WrapInitGitRepoError

func WrapInitGitRepoError(err error) error

WrapInitGitRepoError wraps an error when initializing git repository

func WrapIterateTagsError

func WrapIterateTagsError(err error) error

WrapIterateTagsError wraps an error when iterating tags

func WrapOpenRepoError

func WrapOpenRepoError(err error) error

WrapOpenRepoError wraps an error when opening repository

func WrapReadGroupDirError

func WrapReadGroupDirError(err error) error

WrapReadGroupDirError wraps an error when reading group directory

func WrapSetTagRefError

func WrapSetTagRefError(err error) error

WrapSetTagRefError wraps an error when setting tag reference

func WrapStatGroupError

func WrapStatGroupError(err error) error

WrapStatGroupError wraps an error when stating group

func WrapStatRepoError

func WrapStatRepoError(err error) error

WrapStatRepoError wraps an error when stating repository

func WrapStoreTagError

func WrapStoreTagError(err error) error

WrapStoreTagError wraps an error when storing tag object

func WrapTagNotFoundError

func WrapTagNotFoundError(err error) error

WrapTagNotFoundError wraps an error when tag is not found

func WrapWalkGroupsDirError

func WrapWalkGroupsDirError(err error) error

WrapWalkGroupsDirError wraps an error when walking groups directory

func WrapWalkReposDirError

func WrapWalkReposDirError(err error) error

WrapWalkReposDirError wraps an error when walking repositories directory

Types

type AlreadyExistsError

type AlreadyExistsError struct {
	ResourceType string // "repository", "group", etc.
	Name         string
}

AlreadyExistsError represents a resource that already exists

func (*AlreadyExistsError) Error

func (e *AlreadyExistsError) Error() string

type ConflictError

type ConflictError struct {
	Message string
}

ConflictError represents a conflict between resources

func (*ConflictError) Error

func (e *ConflictError) Error() string

type Group

type Group struct {
	Name        string    `json:"name" example:"myorg"`
	Description string    `json:"description" example:"My Organization"`
	Path        string    `json:"path" example:"/path/to/repos/myorg"`
	CreatedAt   time.Time `json:"created_at" example:"2025-01-01T00:00:00Z"`

} // @name Group

Group represents a namespace/organization for repositories @Description Group/namespace for organizing repositories

type InvalidTypeError

type InvalidTypeError struct {
	Expected string
	Actual   string
	Name     string
}

InvalidTypeError represents a resource that has the wrong type

func (*InvalidTypeError) Error

func (e *InvalidTypeError) Error() string

type NotEmptyError

type NotEmptyError struct {
	ResourceType string // "group", etc.
	Name         string
}

NotEmptyError represents a resource that is not empty when it should be

func (*NotEmptyError) Error

func (e *NotEmptyError) Error() string

type NotFoundError

type NotFoundError struct {
	ResourceType string // "repository", "group", "tag", etc.
	Name         string
}

NotFoundError represents a resource that was not found

func (*NotFoundError) Error

func (e *NotFoundError) Error() string

type OperationError

type OperationError struct {
	Op  string // Operation name: "create", "delete", "open", etc.
	Err error  // Underlying error
}

OperationError represents an error during an operation

func (*OperationError) Error

func (e *OperationError) Error() string

func (*OperationError) Unwrap

func (e *OperationError) Unwrap() error

type Params

type Params struct {
	fx.In

	Lifecycle fx.Lifecycle
	Logger    *zap.Logger
}

type Repository

type Repository struct {
	Name        string    `json:"name" example:"myorg/myrepo"`
	Description string    `json:"description" example:"My awesome repository"`
	Path        string    `json:"path" example:"/path/to/repos/myorg/myrepo.git"`
	CreatedAt   time.Time `json:"created_at" example:"2025-01-01T00:00:00Z"`

} // @name Repository

Repository represents a Git repository @Description Git repository information

type RepositoryManager

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

func (*RepositoryManager) CreateGroup

func (m *RepositoryManager) CreateGroup(name, description string) (*Group, error)

CreateGroup creates a new group (namespace/organization)

func (*RepositoryManager) CreateRepository

func (m *RepositoryManager) CreateRepository(name, description string) (*Repository, error)

CreateRepository creates a new Git repository

func (*RepositoryManager) CreateTag

func (m *RepositoryManager) CreateTag(repoName, tagName, commitHash, message, tagger string) (*Tag, error)

CreateTag creates a Git tag

func (*RepositoryManager) DeleteGroup

func (m *RepositoryManager) DeleteGroup(name string) error

DeleteGroup deletes a group

func (*RepositoryManager) DeleteRepository

func (m *RepositoryManager) DeleteRepository(name string) error

DeleteRepository deletes a Git repository

func (*RepositoryManager) DeleteTag

func (m *RepositoryManager) DeleteTag(repoName, tagName string) error

DeleteTag deletes a Git tag

func (*RepositoryManager) GetGroup

func (m *RepositoryManager) GetGroup(name string) (*Group, error)

GetGroup retrieves a group by name

func (*RepositoryManager) GetReposPath

func (m *RepositoryManager) GetReposPath() string

GetReposPath returns the base path where repositories are stored

func (*RepositoryManager) GetRepository

func (m *RepositoryManager) GetRepository(name string) (*Repository, error)

GetRepository retrieves a repository by name

func (*RepositoryManager) GetTag

func (m *RepositoryManager) GetTag(repoName, tagName string) (*Tag, error)

GetTag retrieves a specific tag

func (*RepositoryManager) IsGroup

func (m *RepositoryManager) IsGroup(name string) bool

IsGroup checks if the given name is a group (not a repository)

func (*RepositoryManager) IsRepository

func (m *RepositoryManager) IsRepository(name string) bool

IsRepository checks if the given name is a repository

func (*RepositoryManager) ListGroups

func (m *RepositoryManager) ListGroups() ([]Group, error)

ListGroups returns all groups (directories without .git suffix)

func (*RepositoryManager) ListRepositories

func (m *RepositoryManager) ListRepositories() ([]Repository, error)

ListRepositories returns all repositories Supports multi-level directory structures, recursively scanning for .git repositories

func (*RepositoryManager) ListTags

func (m *RepositoryManager) ListTags(repoName string) ([]Tag, error)

ListTags lists all tags in a repository

type Tag

type Tag struct {
	Name       string    `json:"name" example:"v1.0.0"`
	CommitHash string    `json:"commit_hash" example:"abc123def456789"`
	Message    string    `json:"message,omitempty" example:"Release version 1.0.0"`
	Tagger     string    `json:"tagger,omitempty" example:"John Doe"`
	TaggerDate time.Time `json:"tagger_date,omitempty" example:"2025-01-01T00:00:00Z"`
	Type       string    `json:"type" example:"annotated" enums:"lightweight,annotated"`

} // @name Tag

Tag represents a Git tag @Description Git tag information (lightweight or annotated)

Jump to

Keyboard shortcuts

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