Mostly gets project maps in a format suitable for eval-in-project
(including the repositories), but also number-ifies port for aether (the
way the real URL.getPort method behaves).
Use the new :repository-session-fn keyword for pomegranate
to add a DependencyChainFilter that checks for version ranges.
We store them in an atom because this might happen on another thread,
and we need to allow all of the ranges to be found.
Fixes#734
Throws an ex-info rather than calling abort to avoid the "Leiningen has
encountered a critical error and will now exit." message.
Adds a check for a :suppress-msg key before printing the exception message in
leiningen.core.main/main.
This fixes the issue causing the build failures. The root of it is
that dynapath was allowing pomegranate to modify the boot classloader,
which caused multiple copies of the same class to be loaded.
Refactored warn-user-repos to take an argument to enable testing.
The tests are different depending on whether
LEIN_SUPPRESS_USER_LEVEL_REPO_WARNINGS is set or not. This is not ideal, but
there doesn't seem to be a good way of altering the environment variables in
clojure.
Can be used to suppress warnings about repositories in user level profiles. Also
adds the list of profiles containing :repositories when not suppressed.
An alias such as {"doc" ["with-profile" "+doc" "doc"]} was leading to a stack
overflow when executed.
This was due to the project being reload when with-profile calls set-profiles,
thus re-instating the aliases that have been removed by remove-alias.
Ordinarily I'd also check that the filename was not "-", or perhaps
get the absolute path, but in this case I know the filename. (Otherwise
this could result in a hung process as gpg waited for stdin.)
The dependencies for pomegranate were cleaned up as of pomegranate-0.0.8. We no longer need to exclude slf4j. (Hard to claim this is important; I just happened to notice that it was not needed.)
Fixes#978.
By adding an atom (to pop off used aliases to avoid recursive calls)
which contains :user :aliases from profiles, we can use those aliases
outside of project maps. Whenever looking up aliases, will check the
atom if we're not in a project.