summaryrefslogtreecommitdiff
path: root/src/rebar_agent.erl
Commit message (Collapse)AuthorAgeFilesLines
* Abuse error_handler to get free metacalls in r3Fred Hebert2017-04-241-7/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Type specifications and edocs improvementsFred Hebert2016-11-271-11/+48
| | | | | | Includes improvments and function documentation for all modules (in alphabetical order) up to rebar_core, and may have included more in other modules as I saw fit to dig and understand more of the internals.
* replace error with debugvans1632016-09-031-2/+2
|
* log error if a module failed to load_file, the user should be awarevans1632016-09-031-2/+13
|
* delete purge load_file specific ordervans1632016-09-021-1/+1
|
* Make less than R17 compatiblevans1632016-09-011-7/+11
|
* comment and spacing fixupvans1632016-09-011-5/+4
|
* Update rebar_agent.erlvans1632016-09-011-3/+3
| | | opps. Infinite loop fixed.
* Update rebar_agent.erlvans1632016-09-011-2/+29
| | | | https://github.com/erlang/rebar3/pull/1317 In reference to with support to load erlang code atomically but load nifs non-atomically.
* Blacklist apps to reloadFred Hebert2016-04-041-5/+12
| | | | | | | | | | | | | | | When an app contains one of the modules we can't afford to get upgraded without breakage (i.e. erlware_commons, providers, getopt), skip reloading that application from the rebar3 agent, such that it can keep on working in subsequent calls. Blacklisted: - erlware_commons (broke on ec_cmd_log) - providers (core to functionality) - cf (useful to not explode on colors) - cth_readable (only used for CT suites, but incompatibilities may break whole runs)
* fix dialyzer warnings, except 'no local return' warningsTristan Sloughter2015-08-081-1/+1
|
* Run agent as current process & hibernateFred Hebert2015-07-031-2/+2
| | | | | | | This tries to reduce memory usage when running `rebar3 shell` by running the agent in the current process (and avoiding to copy state cross-boundaries), and using frequent hibernation after each run to force a full GC and compaction of the current process.
* Apply profiles properly & load all pathsFred Hebert2015-07-011-3/+9
| | | | | | | The old run didn't necessarily apply all profiles well, and would only reload modules in the app file. However, since adding extra_src_dirs, modules can be compiled without ending up in the app file; this lets the rebar3 shell agent handle that case.
* Fix common test run duplication on windowsViacheslav Kovalev2015-06-261-3/+3
|
* Display experimental warningFred Hebert2015-05-291-4/+12
| | | | The feature may still be modified in the future.
* Rebar agent reloads the config file on every runFred Hebert2015-05-281-34/+67
| | | | | This allows proper checking of new configurations, deps, or plugins, and makes sure they are detected during an active shell session.
* Add a shell agentFred Hebert2015-05-261-0/+71
The shell agent allows to run rebar3 commands and autoload compiled modules when that is done.