HexSolver.Registry behaviour (HexSolver v0.3.0)

Copy Markdown View Source

The registry is used by the solver to discover package versions and their dependencies.

Summary

Callbacks

Returns all dependencies of the given package version or :error if the package or version does not exist.

Called when the solver first discovers a set of packages so that the registry can be lazily preloaded.

Returns all versions of the given package sorted from lowest to highest or :error if the package does not exist.

Callbacks

dependencies(repo, package, t)

@callback dependencies(HexSolver.repo(), HexSolver.package(), Version.t()) ::
  {:ok, [HexSolver.dependency()]} | :error

Returns all dependencies of the given package version or :error if the package or version does not exist.

prefetch(list)

@callback prefetch([{HexSolver.repo(), HexSolver.package()}]) :: :ok

Called when the solver first discovers a set of packages so that the registry can be lazily preloaded.

versions(repo, package)

@callback versions(HexSolver.repo(), HexSolver.package()) :: {:ok, [Version.t()]} | :error

Returns all versions of the given package sorted from lowest to highest or :error if the package does not exist.