pkg

package
v0.1.0-dev.20260309222432 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package pkg provides package management actions for the operation graph.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Provider

type Provider struct {
	op.ProviderBase
}

Provider provides platform-independent package management. Platform-specific behavior is delegated to p.Context().Platform.

+devlore:access=planned

func (*Provider) CompensateInstall

func (p *Provider) CompensateInstall(state Tombstone) error

CompensateInstall undoes an Install by removing packages that weren't already installed before the action.

func (*Provider) CompensateRemove

func (p *Provider) CompensateRemove(state Tombstone) error

CompensateRemove undoes a Remove by reinstalling the removed packages.

func (*Provider) CompensateUpgrade

func (p *Provider) CompensateUpgrade(_ Tombstone) error

CompensateUpgrade is a diagnostic no-op. Previous versions are captured in state for manual recovery, but automatic downgrade is not reliable across package managers.

func (*Provider) Install

func (p *Provider) Install(packages []Resource, manager string, cask bool) (result []Resource, state Tombstone, err error)

Install installs packages using the platform's package manager. Returns compensation state with pre-install status per package.

Parameters:

  • packages: package resources to install
  • manager: Package manager override (empty for auto-detect)
  • cask: If true, use Homebrew cask for macOS GUI apps

func (*Provider) Installed

func (p *Provider) Installed(name Resource) (bool, error)

Installed returns true if the named package is installed.

Parameters:

  • name: package resource to check

func (*Provider) NotInstalled

func (p *Provider) NotInstalled(name Resource) (bool, error)

NotInstalled returns true if the named package is not installed.

Parameters:

  • name: package resource to check

func (*Provider) Remove

func (p *Provider) Remove(packages []Resource, manager string, cask bool) (result []Resource, state Tombstone, err error)

Remove removes packages using the platform's package manager. Returns compensation state for reinstallation.

Parameters:

  • packages: package resources to remove
  • manager: Package manager override (empty for auto-detect)
  • cask: If true, use Homebrew cask for macOS GUI apps

func (*Provider) Update

func (p *Provider) Update(manager string) (string, error)

Update refreshes the package manager index.

Parameters:

  • manager: Package manager override (empty for auto-detect)

func (*Provider) Upgrade

func (p *Provider) Upgrade(packages []Resource, manager string, cask bool) (result []Resource, state Tombstone, err error)

Upgrade upgrades packages using the platform's package manager. Returns compensation state with pre-upgrade versions per package.

Parameters:

  • packages: package resources to upgrade
  • manager: Package manager override (empty for auto-detect)
  • cask: If true, use Homebrew cask for macOS GUI apps

func (*Provider) VersionGTE

func (p *Provider) VersionGTE(name Resource, version string) (bool, error)

VersionGTE returns true if the installed version of name is >= version.

Parameters:

  • name: package resource to check
  • version: Minimum version string to compare against

type Resource

type Resource struct {
	op.ResourceBase
	Name    string // package name ("jq", "curl", "VisualStudioCode")
	Type    string // purl type / manager ("brew", "deb", "port", "winget")
	Version string // populated by Resolve()
}

Resource represents a system package.

func NewResource

func NewResource(name string) Resource

NewResource creates a Resource with the given package name. The Type is left empty for auto-detection at Resolve() time.

func NewTypedResource

func NewTypedResource(name, typ string) Resource

NewTypedResource creates a Resource with explicit package name and type.

func (*Resource) Purl

func (r *Resource) Purl() string

Purl returns the canonical package-url string. For this implementation, URI() and Purl() produce the same string.

func (*Resource) Resolve

func (r *Resource) Resolve(_ op.Root) error

Resolve populates Type from the platform's default package manager (when not specified at plan time) and Version from the installed package version. The executor injects platform context before calling Resolve().

func (Resource) String

func (r Resource) String() string

String returns a compact JSON representation of the resource.

type Tombstone

type Tombstone struct {
	op.TombstoneBase
	Packages         []string
	Manager          string
	Cask             bool
	AlreadyInstalled []string
	PreviousVersions map[string]string
}

Tombstone holds package-specific compensation state.

Jump to

Keyboard shortcuts

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