packagemanager

package
v2.0.0-alpha.3 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2024 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 (
	// 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")
)
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 *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

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.

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

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.

func (*WindowsMultiManager) Remove

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

Remove the given packages.

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
JackTT - Gopher 🇻🇳