packagemanager

package
v2.0.0-beta.2 Latest Latest
Warning

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

Go to latest
Published: Jun 9, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package packagemanager provides a generic interface for package managers.

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultRegistry is the default repository of package managers.
	DefaultRegistry = sync.OnceValue(func() *Registry {
		provider := NewRegistry()
		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")
)
View Source
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 *Registry)

RegisterApk registers the apk package manager to a repository.

func RegisterApt

func RegisterApt(repository *Registry)

RegisterApt registers the apt package manager to a repository.

func RegisterChocolatey

func RegisterChocolatey(repository *Registry)

RegisterChocolatey registers the chocolatey package manager to a repository.

func RegisterDnf

func RegisterDnf(repository *Registry)

RegisterDnf registers the dnf package manager to a repository.

func RegisterHomebrew

func RegisterHomebrew(repository *Registry)

RegisterHomebrew registers the homebrew package manager to a repository.

func RegisterMacports

func RegisterMacports(repository *Registry)

RegisterMacports registers the macports package manager to a repository.

func RegisterPacman

func RegisterPacman(repository *Registry)

RegisterPacman registers the pacman package manager to a repository.

func RegisterScoop

func RegisterScoop(repository *Registry)

RegisterScoop registers the scoop package manager to a repository.

func RegisterWindowsMultiManager

func RegisterWindowsMultiManager(repository *Registry)

RegisterWindowsMultiManager registers the windows multi package manager to a repository.

func RegisterWinget

func RegisterWinget(repository *Registry)

RegisterWinget registers the winget (preinstalled on win10+) package manager to a repository.

func RegisterYum

func RegisterYum(repository *Registry)

RegisterYum registers the yum package manager to a repository. It is skipped when dnf is available, as dnf is preferred.

func RegisterZypper

func RegisterZypper(repository *Registry)

RegisterZypper registers the zypper package manager to a repository.

Types

type Factory

Factory is an alias for plumbing.Factory specialized for PackageManager.

type ManagerProvider

type ManagerProvider func(cmd.ContextRunner) (PackageManager, error)

ManagerProvider is a function that returns a PackageManager given a runner.

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.

func (*NullPackageManager) Remove

func (n *NullPackageManager) Remove(ctx context.Context, packageNames ...string) error

Remove returns an error on every call.

func (*NullPackageManager) Update

func (n *NullPackageManager) Update(ctx context.Context) error

Update 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

NewApk creates a new apk package manager.

func NewApt

NewApt creates a new apt package manager.

func NewChocolatey

func NewChocolatey(c cmd.ContextRunner) PackageManager

NewChocolatey creates a new chocolatey package manager.

func NewDnf

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

NewYum creates a new yum package manager.

func NewZypper

func NewZypper(c cmd.ContextRunner) PackageManager

NewZypper creates a new zypper package manager.

type Provider

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

Provider 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 NewPackageManagerProvider

func NewPackageManagerProvider(get ManagerProvider, runner cmd.ContextRunner) *Provider

NewPackageManagerProvider creates a new instance of Provider with the provided ManagerProvider function.

func (*Provider) PackageManager

func (p *Provider) PackageManager() (PackageManager, error)

PackageManager returns a PackageManager or an error if the package manager could not be initialized.

type Registry

Registry is an alias for plumbing.Provider specialized for PackageManager.

func NewRegistry

func NewRegistry() *Registry

NewRegistry creates a new instance of the specialized Registry.

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.

func (*WindowsMultiManager) Remove

func (w *WindowsMultiManager) Remove(ctx context.Context, packageNames ...string) error

Remove the given packages.

func (*WindowsMultiManager) String

func (w *WindowsMultiManager) String() string

String returns the package manager name.

func (*WindowsMultiManager) Update

func (w *WindowsMultiManager) Update(ctx context.Context) error

Update the package lists in all the package managers.

Jump to

Keyboard shortcuts

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