Liking cljdoc? Tell your friends :D

hive-addon.mount.solve

Pure DAG solver for the addon mounter — spec set -> MountPlan. No IO, no var resolution.

Ordering constraints are a rule-chain: IDependencyRule turns the spec set into directed [from-id to-id] edges (from mounts before to); edges folds the chain into one edge set. Two built-in rules cover hard id deps (:addon/dependencies) and looser capability deps (:addon/requires-capabilities satisfied by any peer whose :addon/capabilities contains the cap).

solve is a pure deterministic fn of the spec SET: it Kahn topo-sorts with a lowest-:addon/id lexicographic tie-break, so shuffled input yields an identical :ordered. Cycles/missing-deps/unmet-capabilities are diagnosed as data. Graceful by default (acyclic subset ordered, cycles reported); opt-in :fail-closed-cycles true returns (r/err :mount/unsolvable ...).

Pure DAG solver for the addon mounter — spec set -> MountPlan. No IO, no var
resolution.

Ordering constraints are a rule-chain: IDependencyRule turns the spec set
into directed [from-id to-id] edges (from mounts before to); `edges` folds the
chain into one edge set. Two built-in rules cover hard id deps
(:addon/dependencies) and looser capability deps (:addon/requires-capabilities
satisfied by any peer whose :addon/capabilities contains the cap).

`solve` is a pure deterministic fn of the spec SET: it Kahn topo-sorts with a
lowest-:addon/id lexicographic tie-break, so shuffled input yields an
identical :ordered. Cycles/missing-deps/unmet-capabilities are diagnosed as
data. Graceful by default (acyclic subset ordered, cycles reported); opt-in
:fail-closed-cycles true returns (r/err :mount/unsolvable ...).
raw docstring

default-rulesclj/s

The built-in ordering-rule chain. Order is not significant — edges unions every rule's contribution into one edge set.

The built-in ordering-rule chain. Order is not significant — `edges` unions
every rule's contribution into one edge set.
sourceraw docstring

edgesclj/s

(edges specs)
(edges specs rules)

Fold a rule chain over the spec set into one directed edge set #{[from-id to-id] ...}. Defaults to default-rules.

Fold a rule chain over the spec set into one directed edge set
#{[from-id to-id] ...}. Defaults to default-rules.
sourceraw docstring

IDependencyRuleclj/sprotocol

One ordering-constraint rule. -edges turns the spec set into a set of directed edges [from-id to-id], each meaning from-id must mount before to-id.

One ordering-constraint rule. -edges turns the spec set into a set of directed
edges [from-id to-id], each meaning from-id must mount before to-id.

-edgesclj/s

(-edges this specs)

Spec set -> #{[from-id to-id] ...} directed edges this rule contributes.

Spec set -> #{[from-id to-id] ...} directed edges this rule contributes.
sourceraw docstring

solveclj/s

(solve specs)
(solve specs
       {:keys [rules fail-closed-cycles]
        :or {rules default-rules fail-closed-cycles false}})

Pure deterministic solve of a spec SET into a MountPlan.

opts: {:rules [rule ...] (default default-rules) :fail-closed-cycles bool (default false)}

Computes ordering edges via the folded rule chain, Kahn topo-sorts with a lowest-:addon/id tie-break, and diagnoses: :cycles ids that could not be ordered (in/downstream of a cycle) :missing id -> declared dep ids absent from the spec set :unmet-capabilities id -> required caps no active spec provides :duplicates id -> count, for any :addon/id shared by >1 spec Missing deps and unmet caps are reported but do NOT drop the spec from :ordered (graceful); a duplicated id keeps one surviving spec in :ordered; cyclic ids are excluded from :ordered.

Graceful default returns a MountPlan even with cycles. :fail-closed-cycles true returns (r/err :mount/unsolvable {:cycles ...}) when cycles exist.

Pure deterministic solve of a spec SET into a MountPlan.

opts: {:rules [rule ...]         (default default-rules)
       :fail-closed-cycles bool  (default false)}

Computes ordering edges via the folded rule chain, Kahn topo-sorts with a
lowest-:addon/id tie-break, and diagnoses:
  :cycles              ids that could not be ordered (in/downstream of a cycle)
  :missing             id -> declared dep ids absent from the spec set
  :unmet-capabilities  id -> required caps no active spec provides
  :duplicates          id -> count, for any :addon/id shared by >1 spec
Missing deps and unmet caps are reported but do NOT drop the spec from
:ordered (graceful); a duplicated id keeps one surviving spec in :ordered;
cyclic ids are excluded from :ordered.

Graceful default returns a MountPlan even with cycles. :fail-closed-cycles
true returns (r/err :mount/unsolvable {:cycles ...}) when cycles exist.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close