Documentation
¶
Overview ¶
Package resolver builds the dependency graph, resolves semver ranges to concrete versions, validates ILE signatures, detects conflicts, and produces a reproducible bindle.lock.
Package resolver builds the dependency graph, resolves semver ranges to concrete versions, validates ILE signatures, detects conflicts, and produces a reproducible bindle.lock.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Available ¶
type Available struct {
Version string
Library string
Srvpgm string
Signature string
Artifact string
Hash string
Dependencies map[string]string // name -> version constraint
Schema string // migration target schema
Migrations []string // registry-relative migration paths, ordered
}
Available describes one published version of a package.
type ConflictError ¶
type ConflictError struct {
Package string
Constraints []constraintSrc
}
ConflictError is returned when no version satisfies all accumulated constraints.
func (*ConflictError) Error ¶
func (e *ConflictError) Error() string
type CycleError ¶
type CycleError struct{ Members []string }
CycleError is returned when the dependency graph contains a cycle.
func (*CycleError) Error ¶
func (e *CycleError) Error() string
type NotFoundError ¶
type NotFoundError struct{ Package string }
NotFoundError is returned when a required package is unknown to the registry.
func (*NotFoundError) Error ¶
func (e *NotFoundError) Error() string
type Registry ¶
type Registry interface {
// Versions returns the available published versions of a package.
// An empty result means the package is unknown to the registry.
Versions(name string) ([]Available, error)
}
Registry provides the data the resolver needs about available packages.
type Resolution ¶
type Resolution struct {
// Order is a topological order: dependencies appear before dependents.
Order []string
// Selected maps each package name to the concrete version chosen.
Selected map[string]Available
}
Resolution is the outcome of resolving a manifest's dependency graph.
func Resolve ¶
func Resolve(root *manifest.Manifest, reg Registry) (*Resolution, error)
Resolve walks the dependency graph reachable from root, selecting for each package the highest version satisfying every accumulated constraint.
func (*Resolution) Lock ¶
func (r *Resolution) Lock() *manifest.Lock
Lock converts a resolution into a reproducible manifest.Lock.