diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2017-04-24 19:43:44 -0400 |
---|---|---|
committer | Fred Hebert <mononcqc@ferd.ca> | 2017-04-24 20:35:59 -0400 |
commit | 03425c788c0e1ac38a3172f6c13a42cd1ffa4b4a (patch) | |
tree | 9f54fdb69bf4c37e5a6888bab5a4d8f17e9267cd /LICENSE | |
parent | d284b72c615bcccaea7d2c48b801a67962ccfe17 (diff) |
Abuse error_handler to get free metacalls in r3
This uses the very risky '$handle_undefined_function'/2 export from the
r3 and rebar_agent modules to allow meta-calls that can support plugins
and all other rebar3 extensions.
This is nasty but very tempting. Currently we only support:
- r3:do(Command)
- r3:do(Namespace, Command)
There is currently no way to pass arguments to the function such that we
can, for example, run cover analysis or tests on a subset of suites.
With the new abuse of '$handle_undefined_function'/2, we can detect the
unused commands (since they are not exported) and re-route them:
- r3:Command()
- r3:Command("--args=as a string")
- r3:Command(Namespace, "--args=as a string")
Of course, in doing so, we make it impossible to use the 'do' provider
(as in 'rebar3 do ct -c, cover') since the 'do' function is already
required for things to work.
Since the previous function had very strict guards, we can, without
conflict, add manual overrides that simulate the meta-calls fine.
Sample run:
https://gist.github.com/ferd/2c06d59c7083c146d25e4ee301de0073
Diffstat (limited to 'LICENSE')
0 files changed, 0 insertions, 0 deletions