Liking cljdoc? Tell your friends :D

pedantic.core

The end goal for pedantic is to hook into Aether's dependency resolution and provide feedback about the dependency tree. Using a DependencyGraphTransformer allows us to look at the tree both before and after conflict resolution so that downloading all of the dependencies only occurs once.

Aether uses a NearestVersionConflictResolver to resolve which versions to use in case of a conflict. The NearestVersionConflictResolver uses a ConflictIdSorter to determine those, and it will save the information in SORTED_CONFLICT_IDS and CONFLICT_IDS. We can similarly use the conflict information to determine which version is choosen in a conflict.

Additional important classes from Aether:

  • DependencyGraphTransformationContext
  • DependencyNode
  • Dependency
  • Artifact
  • Version
  • VersionConstraint
The end goal for pedantic is to hook into Aether's dependency
resolution and provide feedback about the dependency tree. Using a
`DependencyGraphTransformer` allows us to look at the tree both before
and after conflict resolution so that downloading all of the
dependencies only occurs once.

Aether uses a `NearestVersionConflictResolver` to resolve which
versions to use in case of a conflict. The
`NearestVersionConflictResolver` uses a `ConflictIdSorter` to
determine those, and it will save the information in
`SORTED_CONFLICT_IDS` and `CONFLICT_IDS`. We can similarly use the
conflict information to determine which version is choosen in a
conflict.

Additional important classes from Aether:

* `DependencyGraphTransformationContext`
* `DependencyNode`
* `Dependency`
* `Artifact`
* `Version`
* `VersionConstraint`
raw docstring

initialize-conflict-ids!clj

(initialize-conflict-ids! node context)

Make sure that SORTED_CONFLICT_IDS and CONFLICT_IDS have been initialized. Similar to what a NearestVersionConflictResolver will do.

Make sure that `SORTED_CONFLICT_IDS` and `CONFLICT_IDS` have been
initialized. Similar to what a NearestVersionConflictResolver will do.
sourceraw docstring

set-overrides!clj

(set-overrides! overrides conflicts accepted-paths ranges)

Check each accepted-path against its conflicting paths. If a conflicting path fails the pedantic criteria then add information representing this possibly confusing situation to overrides.

Check each `accepted-path` against its conflicting paths. If a
conflicting path fails the pedantic criteria then add information
representing this possibly confusing situation to `overrides`.
sourceraw docstring

set-ranges!clj

(set-ranges! ranges paths)

Set ranges to contain all paths that asks for a version range

Set ranges to contain all paths that asks for a version range
sourceraw docstring

transform-graphclj

(transform-graph ranges overrides node context transformer)

Examine the tree with root node for version ranges, then allow the original transformer to perform resolution, then check for overriden dependencies.

Examine the tree with root `node` for version ranges, then
allow the original `transformer` to perform resolution, then check for
overriden dependencies.
sourceraw docstring

use-transformerclj

(use-transformer session ranges overrides)

Wrap the session's current DependencyGraphTransformer with one that checks for version ranges and overriden dependencies.

ranges and overrides are expect to be (atom []). This provides a way to send back information since the return value can't be used here.

After resolution: ranges will be a vector of paths (see pedantic.path) overrides will be a vector of maps with keys [:accepted :ignoreds :ranges]. :accepted is the path that was resolved. :ignored is a list of paths that were not used. :ranges is a list of paths containing version ranges that might have affected the resolution.

Wrap the session's current `DependencyGraphTransformer` with one that checks
for version ranges and overriden dependencies.

`ranges` and `overrides` are expect to be (atom []).  This provides a way to
send back information since the return value can't be used here.

After resolution:
  `ranges` will be a vector of paths (see pedantic.path)
  `overrides` will be a vector of maps with keys [:accepted :ignoreds :ranges].
    `:accepted` is the path that was resolved. :ignored is a list of
    paths that were not used.
    `:ranges` is a list of paths containing version ranges that might
    have affected the resolution.
sourceraw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close