Refactored ModulesManager.download() to take an object parameter
For instance, it will allow configure transitivity for downloads
Provided RestxArchiveUnpacker utility class, allowing to unpack a restx archive
Created new app grab command, allowing to grab file from gav or url
Unpacking restx archive non chrooted files into target classes directory instead of copying jarFile to target dependencies
2 benefits :
- Will avoid classnotfounds if subsequent restx app run copy deps (and removes app's jar file provided in target dependencies during unpack)
- Will avoid having some resources in 2 locations (both in app root and in classpath hello.jar!META-INF/restx/app/*)
Refactored a bit `app run` arguments handling
Replacing compileMode by restxMode (we'll see in a future commit that compileMode should be resolved at `run` time, not at `creation` time)
and introducing appName argument
Introducing "sourcesAvailable" runtime flag during `app run`
appClassName, compileMode & restxMode will be valued depending on it
since if no sources are available (typically, after a `app grab url|gav`), we neither want auto compile nor dev mode
Refactoring to preparing field for `app grab <git url>` implementation
Provided FROM_GIT Grabbing strategy
Moved FROM_GIT strategy *before* FROM_URL since accept() impl
for git could start with http/https (overlapping FROM_URL accept() predicate)
Ensuring given jar is a restx archive before unpacking it
Updated documentation for `app run` with appname & compilation details
Added documentation for `app grab` command
Using ModulesManager's toMrid() instead of custom mrid parsing in FROM_GAV grabbing strategy
Fixed some corner cases in extractExtensionlessFilenameFromUrl()
(urls without dot, or with `?` mark)
Allows to override restx mode when app name is given to `app run` *and* sources are available in the restx app
Fixing potential NPE when guessAppClassnameFromSourcesSupplier() returns null-wrapped supplier
Fixed restx typo