Checkouts are recursive by default and the same checkout project may be
reachable via several paths when symlinks are used. Avoid visiting projects
multiple times by keeping track of seen projects while accumulating
checkouts classpath entries.
Using clojure.edn/read-string results in nil instead of an exception
user=> (edn/read-string "")
nil
user=> (read-string "")
RuntimeException EOF while reading clojure.lang.Util.runtimeException (Util.java:221)
When generating a profile scope string for the target path, any subset
of active profiles that matches a composite profile are replaced with
the composite.
For example, the profiles [:base :system :user :provided :dev :foo]
would be represented as "default+foo", because the :default profile is a
composite of [:base :system :user :provided :dev].
This switches the default repo url (for resolving artifacts, not
deploying) to point to the CDN-fronted repo. Note that this repo won't
work with Java 6 - users of 6 will need to manually override the default
url to point to the old one (https://clojars.org/repo).
In certain cases (e.g. reading a project.clj file out of a jar,
rather than from a file on disk) it is useful for the `read`
and `read-raw` functions to support being passed a `Reader` object,
rather than a File or path.
This commit modifies the `read-raw` function to support being
passed a Reader. It also modifies the `defproject` macro to
avoid the assumption that `*file*` will always have a non-nil
value, because that assumption causes an NPE in the case where
a Reader is the source of the project definition.
This commit provides initial support for `managed-dependencies`,
where dependency version numbers may be specified in a separate
section called `managed-dependencies`, and those version numbers
will be used for any deps in the main `dependencies` section
that do not explicitly specify a version number.
This is a precursor to being able to specify a "parent" project
that could be used to consolidate version numbers of common
dependencies across a large number of libraries.
Instead of using String.split then recombining arguments to repair broken
quoted arguments, this parser now finds entire arguments using regex matching.
This is more robust, handling extra whitespace (and non-space whitespace)
correctly, while also correctly matching quotations in argument strings and
preserving internal spaces.
If a directory on the classpath does not exist when the JVM is started,
it's ignored even if it is subsequently created. This commit ensures
that source, resource and test paths exist as part of the prep work for
eval-in-project.
Exactly like `sh` except that it requires a failure message and if the
command exits with a non-0 code, it use the failure message to throw an
Exception.
Added unit tests as well.
It's likely that the alias vector provides additional arguments that
change the semantics of the invocation, so blindly propagating the
docstring would be misleading.
This fixes pass-through-help when used on vector valued aliases. Ex:
:aliases {"a" ^:pass-through-help ["run" "-m" "some.core"]
"b" ^:any-meta ["a"]}
The meta on task b will be `{:pass-through-help true, :any-meta true}`.
As described in #1695, the `^:replace` metadata for the
`:repositories` section of the project file stopped working
around 2.4.0 (commit 17e91e6).
This commit adds a failing test that illustrates the
behavior.
Adds :leaky and :pom-scope metadata for profiles. The :dev, :test,
:base and :provided profiles are implemented in terms of these.
Profiles with :leaky metadata affect the pom and jar creation.
Profiles with a :pom-scope metadata of :test or :provided also affect
the dependencies of a pom.