Commit graph

102 commits

Author SHA1 Message Date
Tuncer Ayaz
5b15c851d8 Check for .app.src first 2012-01-13 19:39:28 +01:00
Tuncer Ayaz
eab5ae5298 Fix code clarity in dir type check 2012-01-13 19:00:44 +01:00
Tuncer Ayaz
7c327c1195 Fix rebar_core crash (reported-by: Jeremy Raymond) 2011-12-18 13:29:58 +01:00
Tuncer Ayaz
8c89a388bf Universally support apps=/skip_apps= 2011-12-12 21:20:34 +01:00
Tuncer Ayaz
8de2c84d89 Add support for arch-specific hooks
{pre_hooks,  [{"linux", compile, "c_src/build_linux.sh"}]}.
{post_hooks, [{"linux", compile, "c_src/build_linux.sh clean"}]}.
2011-12-05 14:17:18 +01:00
Tim Watson
86325b616d Allow plugins to participate in pre and post processing
This patch modifies rebar_core to allow plugins to participate in the
pre and post processing steps, giving plugin authors more flexibility
and control.
2011-10-20 16:31:08 +02:00
Tim Watson
30d1cdb31b Fix config handling in root_dir
Avoid overwriting custom config (passed with -C) when we are processing
the base_dir in rebar_core.
2011-10-05 13:49:27 +02:00
Tim Watson
36a40d3351 Fix missing plugin warnings
This patch fixes the warning logging when the number of missing plugins
is greater than one. The current code only works by accident, when a
single plugin is all that is missing.
2011-09-20 13:15:03 +02:00
Tuncer Ayaz
93128f2f6b Search plugin sources in base_dir and plugin_dir 2011-08-29 17:27:45 +02:00
Tuncer Ayaz
00b3d9d3cc Only compile relevant plugin sources 2011-08-29 17:27:45 +02:00
Tuncer Ayaz
4fe651cb5b Simplify check for empty list 2011-08-29 17:27:45 +02:00
Tim Watson
3b58935b86 Load plugins dynamically from source
This patch updates rebar_core to look for missing plugins (i.e. those
that aren't found on the code path at runtime) in a configurable
plugin directory, and dynamically compile and load them at runtime.

By default, the directory "plugins" is searched, although this can be
overriden by setting the plugin_dir in your rebar.config.
2011-08-29 17:27:45 +02:00
Tuncer Ayaz
1dcf0d15dc Log a more descriptive message 2011-08-23 18:54:05 +02:00
Tuncer Ayaz
da31f90d1d Rename rebar_plugins to plugins for consistency 2011-08-16 17:34:09 +02:00
Tuncer Ayaz
1ec92ebac3 Do not warn if pre_/post_ cmd is not available 2011-07-08 13:40:47 +02:00
Tuncer Ayaz
8263f12594 Add support for $HOME/.rebar/config 2011-07-06 20:14:15 +02:00
Tim Watson
c07b0954eb Allow plugins to run before/after a rebar command.
This patch makes a small change in rebar_core that checks the list
of valid plugins to see if any of them export a pre/post processing
function for the current command. This logic is applied only to the
plugins and allows plugin authors to hook into rebar's execution by
using a naming convention that matches the one used for scripting hooks.

Example:

```erlang
-module(my_rebar_plugin).
-export([pre_compile/2]).
pre_compile(Config, AppFile) ->
    rebar_log:log(debug, "PRECOMPILE: ~p:~p~n",
                  [AppFile, Config]),
    ok.
```
2011-05-23 12:46:03 +01:00
Tuncer Ayaz
20dfd32c85 Add support for command-specific env for hooks 2011-04-21 21:38:16 +02:00
Tuncer Ayaz
bc98a4820e Simplify hook changes to rebar_core 2011-03-12 16:32:44 +01:00
Tim Watson
e76770511a Add pre and post script support for all commands
This change makes it possible to assign pre/post scripts to all
rebar commands. This allows users fine grained control over
when scripts and/or shell commands should be executed, where such
extensions are absolutely needed.

Several examples have been added to the rebar.config.sample file.
2011-03-12 16:31:41 +01:00
Juan Jose Comellas
58661a92e2 Convert the entries in the code path to absolute paths
Rebar will exit with {error,bad_directory} when trying to restore the code
path after it has finished working on a subdirectory if there are invalid
relative paths in it. The problem was seen when executing the last line of
rebar_erlc_compiler:doterl_compile/3 (true = code:set_path(CurrPath)).
2011-02-26 15:57:17 +01:00
Tuncer Ayaz
3356c2d9e8 Use erlang:function_exported/3 2011-02-21 17:42:10 +01:00
Tuncer Ayaz
63de05d914 Clean up code 2011-02-06 17:41:04 +01:00
Tuncer Ayaz
c466076ffb Clean up emacs file local variables 2011-01-31 17:55:36 +01:00
Tim Watson
7ac3a5aa9b Move BUILD_TIME and VCS_INFO macros
I have moved these macros from rebar_core.erl to rebar.erl
in order to prevent eunit tests from failing (which they
currently are).
2011-01-29 16:16:37 +01:00
Tuncer Ayaz
3fd3bfc89a Fix circular dependency 2011-01-27 15:57:55 +01:00
Klas Johansson
6978504d43 Add support for abbreviated command names
This change makes it possible to type the beginning (the prefix) of a
command name and rebar will guess the full name of the command,
thereby saving the user precious keystrokes.  As long as the prefix
matches only one command, rebar runs that command, otherwise rebar
prints a list of candidate command names. The "-" character is
considered to be a word separator and the prefix matching is done per
word.

Example prefix matches:

    co       ==> compile
    cl       ==> clean
    create   ==> create
    create-a ==> create-app
    c-a      ==> create-app
    c-app    ==> create-app
2011-01-24 17:18:33 +01:00
Tuncer Ayaz
d1ff83a898 Move command line handling funs into rebar.erl 2011-01-24 17:17:23 +01:00
Tuncer Ayaz
932eb2e343 Simplify rebar_core 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
d922985b36 Fix typos 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
a8870807fc Fix code clarity 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
d8e50e8c2d Implement update-deps and disable auto update 2010-12-17 12:39:50 +01:00
Anders
513ae33c5c Add possibility to specify rebar config for the "main" application 2010-11-09 20:19:38 -07:00
Andrew Thompson
ff5a7982eb Improve error logging when running a command fails
Make the error message newline terminated and, if possible, log the name
of the module in which the failure occured.
2010-10-29 11:52:13 -04:00
Kostis Sagonas
7dc76d578e Tidier improvements 2010-10-26 00:38:51 +02:00
Tuncer Ayaz
2d2aed627f Refactor Dialyzer support to make it more usable 2010-10-25 22:37:18 +02:00
Kostis Sagonas
e024778599 Dialyzer related cleanups 2010-10-10 14:11:13 -06:00
Tuncer Ayaz
933e4f7620 Fix dialyzer warning. Thanks Kostis 2010-10-01 14:37:42 +02:00
Tuncer Ayaz
1712425588 Fix another filename:join/2 warning. Thanks Kostis 2010-10-01 13:39:02 +02:00
Tuncer Ayaz
33918a0612 Remove 'install' from available commands list 2010-08-25 22:32:42 +02:00
Andrew Thompson
24cc775e88 Warn when a command is not implemented. Fail when no supplied commands are implemented
Rebar currently doesn't give any feedback on an invalid command. This change
makes rebar keep track of how many operations each command triggers, if a
particular command doesn't change the count, there were no modules implementing
it. If at the end of handling all commands, tje count is 0, none of the supplied
commands were valid and ?FAIL is called to trigger a non zero exit status.
2010-07-25 01:56:46 -04:00
Dave Smith
ed59ed2b52 Fix bug 629; updated help for new common_test command 2010-08-20 09:53:23 -06:00
Dave Smith
b063d3b8df Fix bug 438; add support for listing available templates 2010-08-20 09:30:37 -06:00
Tuncer Ayaz
688430fac0 Document doc command 2010-06-30 20:25:13 +02:00
Dave Smith
02bc52fc6a Add support for embedding VCS info into the version data 2010-06-22 13:47:06 -06:00
Dave Smith
ad7a494bde Change semantics of skip_deps=true such that deps still get pre/post processed, just not actually run 2010-06-21 10:24:01 -06:00
Klas Johansson
4dae6318aa Bugfix call to lists:member/2 in ulist/2
Change from lists:is_member/2 to lists:member/2, since the former
doesn't exist (the bug only affects rebar_plugins).
2010-06-19 10:08:34 +02:00
Dave Smith
9dda9c2578 Re-adding support for plugin modules
--HG--
extra : rebase_source : 90052500da62af1d32337f2d540acb39fdf67db4
2010-06-09 13:45:55 -06:00
Dave Smith
3df1d4292a Heavy-duty refactor to support truly transitive dependencies
--HG--
extra : rebase_source : 41c7f1c337a7cb63582aecd7b87ba998b40ba3aa
2010-06-09 13:16:58 -06:00
Dave Smith
a2f1b62d74 Slightly different fix for bug#5 that avoids running preprocess twice 2010-06-08 13:31:43 -06:00