In order to support medium to large projects, nostrand should be able to manage dependencies the way lein or boot does. This is complicated by the fact that we are on the CLR which means that 1) consuming Java packages from Maven is useless and 2) consuming packages from NuGet is desirable.
My current prototype is the Dependency Acquisition and Management Namespace, or damn which support lein-like coordinates to packages, with the addition of a leading keyword that indicates their source.
The above example pulls in Clojure source for org.clojure/tools.analyzer from maven central/clojars, OpenTK binaries from NuGet, and the contents of three GitHub repositories.
Implementing a source involves two multimethods:
(acquire! options coordinate) downloads the necessary files
(paths options coordinates) returns the paths within the downloaded files to be added to the load path and scanned for assemblies
In order to support medium to large projects, nostrand should be able to manage dependencies the way lein or boot does. This is complicated by the fact that we are on the CLR which means that 1) consuming Java packages from Maven is useless and 2) consuming packages from NuGet is desirable.
My current prototype is the Dependency Acquisition and Management Namespace, or
damn
which support lein-like coordinates to packages, with the addition of a leading keyword that indicates their source.The above example pulls in Clojure source for
org.clojure/tools.analyzer
from maven central/clojars,OpenTK
binaries from NuGet, and the contents of three GitHub repositories.Implementing a source involves two multimethods:
(acquire! options coordinate)
downloads the necessary files(paths options coordinates)
returns the paths within the downloaded files to be added to the load path and scanned for assemblies