The idea is that given we accept arbitrary config items for CT, we
should similarly be able to pass unsupported options and keep things
running.
However for unsupported options, a warning is very useful to have.
Changes to how hex or packages may work in the future will necessarily
bring changes to the format of lock files.
This commit adds an optional framing for future lock files of the form:
{Version, LockList}.
<Whatever consultable attributes>
This format is supported such as the LockList is the current lockfile
contents, and will never have more information than it currently does.
Attributes can be whatever and are currently undefined.
Rebar copies will be able to:
- Keep using the core locklist (which avoids breaking the last year or
so of community libraries using rebar3)
- Warn when it runs an outdated copy in comparison to the lock file
- Automatically rewrite lock files in the format it supports
- Augment or parse files in a version-specific manner.
This changes the usage interface slightly, but is backwards *and*
forwards compatible.
Several projects use an include path relative
to the project's root.
file:compile will look in three places for the include
files:
The current working directory
The directory where the module is being compiled
The directories given by the include option
If a bad configuration file is submitted to rebar3 shell, display the
following error:
===> The configuration file submitted could not be read and will be
ignored.
And keep going otherwise rather than silently failing.
While crash-fast is usually a good mechanism, the shell so far is very
tolerant of failures from apps to boot and whatnot, so this feels
appropriate.
Fixes#1019
`beam_lib:chunks(..)` needs a path to object code which, frustratingly,
`code:which/1` won't return for cover compiled modules. instead just
assume that if `code:which/1` doesn't return `non_existing` a module
is something we can run tests on
this is slower than the compile time check but i guess packaging rebars with
repos is still a thing and i think only the eunit and ct providers call it
anyways