Documentation
¶
Overview ¶
Package packagemanager provides a generic interface for package managers.
Index ¶
- Variables
- func RegisterApk(repository *Provider)
- func RegisterApt(repository *Provider)
- func RegisterChocolatey(repository *Provider)
- func RegisterDnf(repository *Provider)
- func RegisterHomebrew(repository *Provider)
- func RegisterMacports(repository *Provider)
- func RegisterPacman(repository *Provider)
- func RegisterScoop(repository *Provider)
- func RegisterWindowsMultiManager(repository *Provider)
- func RegisterWinget(repository *Provider)
- func RegisterYum(repository *Provider)
- func RegisterZypper(repository *Provider)
- type Factory
- type NullPackageManager
- type PackageManager
- func NewApk(c cmd.ContextRunner) PackageManager
- func NewApt(c cmd.ContextRunner) PackageManager
- func NewChocolatey(c cmd.ContextRunner) PackageManager
- func NewDnf(c cmd.ContextRunner) PackageManager
- func NewHomebrew(c cmd.ContextRunner) PackageManager
- func NewMacports(c cmd.ContextRunner) PackageManager
- func NewPacman(c cmd.ContextRunner) PackageManager
- func NewScoop(c cmd.ContextRunner) PackageManager
- func NewWindowsMultiManager(c cmd.ContextRunner) PackageManager
- func NewWinget(c cmd.ContextRunner) PackageManager
- func NewYum(c cmd.ContextRunner) PackageManager
- func NewZypper(c cmd.ContextRunner) PackageManager
- type PackageManagerProvider
- type Provider
- type Service
- type WindowsMultiManager
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultProvider is the default repository of package managers. DefaultProvider = sync.OnceValue(func() *Provider { provider := NewProvider() RegisterApk(provider) RegisterApt(provider) RegisterYum(provider) RegisterDnf(provider) RegisterPacman(provider) RegisterZypper(provider) RegisterWindowsMultiManager(provider) RegisterHomebrew(provider) RegisterMacports(provider) return provider }) // ErrNoPackageManager is returned when no supported package manager is found. ErrNoPackageManager = errors.New("no supported package manager found") )
var ErrNoWindowsPackageManager = errors.New("no windows package manager found")
ErrNoWindowsPackageManager is returned when no windows package manager is found.
Functions ¶
func RegisterApk ¶
func RegisterApk(repository *Provider)
RegisterApk registers the apk package manager to a repository.
func RegisterApt ¶
func RegisterApt(repository *Provider)
RegisterApt registers the apt package manager to a repository.
func RegisterChocolatey ¶
func RegisterChocolatey(repository *Provider)
RegisterChocolatey registers the chocolatey package manager to a repository.
func RegisterDnf ¶
func RegisterDnf(repository *Provider)
RegisterDnf registers the dnf package manager to a repository.
func RegisterHomebrew ¶
func RegisterHomebrew(repository *Provider)
RegisterHomebrew registers the homebrew package manager to a repository.
func RegisterMacports ¶
func RegisterMacports(repository *Provider)
RegisterMacports registers the macports package manager to a repository.
func RegisterPacman ¶
func RegisterPacman(repository *Provider)
RegisterPacman registers the pacman package manager to a repository.
func RegisterScoop ¶
func RegisterScoop(repository *Provider)
RegisterScoop registers the scoop package manager to a repository.
func RegisterWindowsMultiManager ¶
func RegisterWindowsMultiManager(repository *Provider)
RegisterWindowsMultiManager registers the windows multi package manager to a repository.
func RegisterWinget ¶
func RegisterWinget(repository *Provider)
RegisterWinget registers the winget (preinstalled on win10+) package manager to a repository.
func RegisterYum ¶
func RegisterYum(repository *Provider)
RegisterYum registers the dnf package manager to a repository.
func RegisterZypper ¶
func RegisterZypper(repository *Provider)
RegisterZypper registers the zypper package manager to a repository.
Types ¶
type Factory ¶
type Factory = plumbing.Factory[cmd.ContextRunner, PackageManager]
Factory is an alias for plumbing.Factory specialized for PackageManager.
type NullPackageManager ¶
type NullPackageManager struct {
Err error
}
NullPackageManager is a package manager that always returns an error on every operation.
func (*NullPackageManager) Install ¶
func (n *NullPackageManager) Install(ctx context.Context, packageNames ...string) error
Install returns an error on every call.
type PackageManager ¶
type PackageManager interface { Install(ctx context.Context, packageNames ...string) error Remove(ctx context.Context, packageNames ...string) error Update(ctx context.Context) error }
PackageManager is a generic interface for package managers.
func NewApk ¶
func NewApk(c cmd.ContextRunner) PackageManager
NewApk creates a new apk package manager.
func NewApt ¶
func NewApt(c cmd.ContextRunner) PackageManager
NewApt creates a new apt package manager.
func NewChocolatey ¶
func NewChocolatey(c cmd.ContextRunner) PackageManager
NewChocolatey creates a new chocolatey package manager.
func NewDnf ¶
func NewDnf(c cmd.ContextRunner) PackageManager
NewDnf creates a new dnf package manager.
func NewHomebrew ¶
func NewHomebrew(c cmd.ContextRunner) PackageManager
NewHomebrew creates a new homebrew package manager.
func NewMacports ¶
func NewMacports(c cmd.ContextRunner) PackageManager
NewMacports creates a new macports package manager.
func NewPacman ¶
func NewPacman(c cmd.ContextRunner) PackageManager
NewPacman creates a new pacman package manager.
func NewScoop ¶
func NewScoop(c cmd.ContextRunner) PackageManager
NewScoop creates a new scoop package manager.
func NewWindowsMultiManager ¶
func NewWindowsMultiManager(c cmd.ContextRunner) PackageManager
NewWindowsMultiManager creates a new windows multi package manager.
func NewWinget ¶
func NewWinget(c cmd.ContextRunner) PackageManager
NewWinget creates a new winget package manager.
func NewYum ¶
func NewYum(c cmd.ContextRunner) PackageManager
NewYum creates a new yum package manager.
func NewZypper ¶
func NewZypper(c cmd.ContextRunner) PackageManager
NewZypper creates a new zypper package manager.
type PackageManagerProvider ¶
type PackageManagerProvider interface {
Get(runner cmd.ContextRunner) (PackageManager, error)
}
PackageManagerProvider returns a package manager implementation from a provider when given a runner.
type Provider ¶
type Provider = plumbing.Provider[cmd.ContextRunner, PackageManager]
Provider is an alias for plumbing.Provider specialized for PackageManager.
func NewProvider ¶
func NewProvider() *Provider
NewProvider creates a new instance of the specialized Provider.
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service provides a unified interface to interact with different package managers. It ensures that a suitable package manager is lazily initialized and made available for package operations. It supports operations like installation, removal, and updating of packages via the PackageManager interface.
func NewPackageManagerService ¶
func NewPackageManagerService(provider PackageManagerProvider, runner cmd.ContextRunner) *Service
NewPackageManagerService creates a new instance of PackageManagerService with the provided PackageManagerProvider.
func (*Service) GetPackageManager ¶
func (p *Service) GetPackageManager() (PackageManager, error)
GetPackageManager returns a PackageManager or an error if the package manager could not be initialized.
func (*Service) PackageManager ¶
func (p *Service) PackageManager() PackageManager
PackageManager provides easy access to the underlying package manager instance. It initializes the package manager if it has not been initialized yet. If the initialization fails, a NullPackageManager instance is returned which will return the initialization error on every operation that is attempted on it.
type WindowsMultiManager ¶
type WindowsMultiManager struct { cmd.ContextRunner // contains filtered or unexported fields }
WindowsMultiManager combines all found windows package managers and tries to manage packaes through all of them. This is done because there is no single one package manager to rule them all for windows.
func (*WindowsMultiManager) Install ¶
func (w *WindowsMultiManager) Install(ctx context.Context, packageNames ...string) error
Install the given packages.