Commit graph

444 commits

Author SHA1 Message Date
Tuncer Ayaz
20dfd32c85 Add support for command-specific env for hooks 2011-04-21 21:38:16 +02:00
Dave Smith
85eb2957c3 Add list-deps command 2011-04-21 06:08:40 -06:00
Evax Software
447417098a Support settable plt dir for dialyzer
Allow rebar to use dialyzer plt files from an alternate directory
through the use of the REBAR_PLT_DIR environment variable.
2011-04-12 15:46:15 +02:00
Tuncer Ayaz
67af251d52 Remove lfe_opts (suggested by Tim Dysinger) 2011-04-11 14:08:39 +02:00
Dave Smith
bda6ee0e48 Centralize variable resolution; add target_dir variable 2011-04-10 16:12:50 -06:00
Dave Smith
4dc2414d89 Add support for priv/<vcs.vsn> as fallback for version info 2011-04-10 16:12:50 -06:00
Dave Smith
c4907b6297 Add support for loading template vars from external file 2011-04-10 16:12:50 -06:00
Dave Smith
3e2baf1a07 Add support for template_wildcarding; allows files from many directories to be templated. 2011-04-10 16:12:50 -06:00
Dave Smith
b7111dce85 Refactor overlay_vars to enable overrides from command-line 2011-04-10 16:12:50 -06:00
Dave Smith
4be3631687 Make sure to pass dir of app when invoking git; enhance shell logging output 2011-04-10 16:12:50 -06:00
Tuncer Ayaz
055ac99d6f Deprecate fail_on_warning and refactor code 2011-04-07 21:56:53 +02:00
Tim Watson
2d385970bf Pass extra params to ct (thanks Mickael Remond)
This patch adds a `ct_extra_params` option to rebar.config, the value
of which is appended to the shell command when executing common test.
2011-04-06 20:11:13 +02:00
Andrew Thompson
310a1bb7ea New eunit param skip_app, allow suite to be a list
This patch allows the 'suite' argument to eunit to be a comma separated
list of modules to test instead of being a single module. This allows
fine-grained testing when one test suite interferes with another and its
not clear which suite is causing the problem. It also lets you run the
test suite in a different order for a similar reason.

The other enhancement is to add a new eunit parameter; 'skip_app' which
like 'app' is a comma separated list of modules to skip testing on. This
parameter is only applied if the app parameter is not passed. Its
purpose is to avoid forcing you to specify all the apps to test if you
only want to skip a handful and there are many apps to test.
2011-04-06 18:56:35 +02:00
Tuncer Ayaz
153aabee9b Use infinite receive (thanks Hakan Mattsson) 2011-04-04 16:39:05 +02:00
David Reid
300a4ac22e Use abort in check-plt and update doc 2011-04-02 17:57:13 +02:00
Tuncer Ayaz
be209f24ff Make debug_info default
Add no_debug_info option.
Remove debug_info=1 option.
2011-03-30 11:19:37 +02:00
Tuncer Ayaz
6d75bfbeb0 Clean up specs 2011-03-28 18:39:38 +02:00
Jordi Chacon
e684af36f0 Fix bug: xref should be stopped after being run
Xref not being stopped caused a crash in subsequent xref runs.
2011-03-26 12:25:25 +01:00
Tuncer Ayaz
2ee4899d24 Fix code clarity and formatting 2011-03-22 11:12:57 +01:00
Shunichi Shinohara
cd3653616b Fix ct include option prefix 2011-03-22 11:08:45 +01:00
Tuncer Ayaz
fa38ed64cc Simplify find_dep_in_dir 2011-03-13 15:55:36 +01:00
Tuncer Ayaz
85e820096d Fix comments 2011-03-13 14:11:24 +01:00
Tuncer Ayaz
4ceb9e07a3 Deprecate old hooks 2011-03-12 16:48:16 +01: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
Tuncer Ayaz
81be474c30 Fix regression (thanks Anthony Molinaro) 2011-03-07 20:16:29 +01:00
joewilliams
0f99ba2280 Fix bug that causes appup generation to fail
This commit changes how rebar determines which apps have been
updated, added and removed from a release during appup generation.
Rather than use app files it now determines this from the rel file
in each version of the release. In addition it fixes a bug reported
on the mailing list when generating appups when an application has
been added or removed from either release.
2011-03-03 16:02:37 -08:00
Christopher Brown
0a603435f5 honor local deps before code path 2011-03-02 21:06:30 -08: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
joewilliams
90d2ce5e07 Ignore app files not in ebin 2011-02-25 18:38:50 +01:00
Tuncer Ayaz
2cff499a34 Fix regression in rebar_lfe_compiler 2011-02-22 17:28:49 +01:00
Tuncer Ayaz
3356c2d9e8 Use erlang:function_exported/3 2011-02-21 17:42:10 +01:00
Tuncer Ayaz
c6f6e8a572 Fix Dialyzer warning and slightly reformat code 2011-02-21 15:43:07 +01:00
Tim Dysinger
6f97e6e55b Add up to date instructions in case LFE is missing 2011-02-21 15:29:50 +01:00
Tim Dysinger
5049da8ec4 Add fail_on_warning support for LFE 2011-02-21 15:29:25 +01:00
Tim Watson
3db8f585f1 Add -spec support to rebar_ct command line
This change adds support for executing ct test runs based on test
specificiations, which was missing previously. The rebar_ct module
now looks for any number of files with a name ending in `test.spec`
and if it finds one or more, passes these after the `-spec` argument
to ct_run instead of explicitly configuring the config, user config
and coverage config variables.

When no specifications are found, then the module behaves as it did
before this change, and both the ct1 and (new) ct2 integration tests
appear to show this is a backwards compatible patch.
2011-02-21 15:08:24 +01:00
Dave Smith
6056c63eed Clean up and simplify {vsn, VCS} support 2011-02-18 10:59:57 +01:00
Tuncer Ayaz
01a7473dac Add {vsn,Vcs} support for bzr, hg and svn 2011-02-17 19:23:43 +01:00
Adam Kocoloski
b0860da124 Expand {vsn,git} in app.src to git-describe output 2011-02-17 19:17:28 +01:00
joewilliams
1e9b2b844b Clean up trailing whitespace 2011-02-17 10:12:32 -08:00
joewilliams
4e8dcfbfad Clean up rebar_appups and rebar_upgrade 2011-02-17 17:13:19 +01:00
Tuncer Ayaz
377c9e86d5 Add PropEr support 2011-02-16 17:36:11 +01:00
joewilliams
c6da0b3ef6 Fix generate-appups regression (atom vs list) 2011-02-16 17:07:12 +01:00
joewilliams
11bf6b4aab Add 'generate-appups' command
To further support OTP releases I have added support for generating
application appup files. These include instructions that systools uses
to generate a relup file which contains the low level instructions
needed to perform a hot code upgrade. My goal with this module is to
produce "good enough" appup files or at least a skeleton to help one get
started with something more complex. If an appup file already exists for
an application this command will not attempt to create a new one.

Usage:
$ rebar generate-appups previous_release=/path/to/old/version

Generally this command will be run just before 'generate-upgrade'.
2011-02-15 18:33:18 +01:00
Anthony Ramine
9ee8ed9181 Give an absolute path to code:add_path/1
If an app uses -include_lib for its own included files, compilation
fails if the app directory isn't in $ERL_LIBS because code:lib_dir/1
will return an error. An absolute path needs to be added to code path
instead of just "ebin".
2011-02-15 18:32:42 +01:00
Tuncer Ayaz
b70f374f89 Remove export_all directive 2011-02-13 16:38:04 +01:00
Joseph Wayne Norton
e4cd50e2a3 Add eunit_first_files option 2011-02-13 16:26:48 +01:00
David Reid
3241165ced Support 2 forms of implicit HEAD for git
In git origin/HEAD is a pointer to the default branch.  This patch
allows two alternatives to explicitly specifying "HEAD" in git VC specs.

The first is a 2 arity form {git, Url} and the second is {git, Url, ""}
which worked in pre-update-deps rebars.
2011-02-13 16:05:42 +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
Tuncer Ayaz
0e729bf90e Fix Dialyzer warnings in rebar_upgrade 2011-01-29 16:18:14 +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
926baa1c31 Use filename:join instead of ?FMT 2011-01-28 20:15:22 +01:00
Tuncer Ayaz
8f5bfea9c4 Fix help: previous_release is mandatory 2011-01-28 19:05:20 +01:00
joewilliams
5298e93a18 Add 'generate-upgrade' command
To support OTP release upgrades I have added support for building
upgrade packages. Support for this is included in the
rebar_upgrade module, specifically generate_upgrade/2. It requires
one variable to be set on the command line 'previous_release' which
is the absolute path or relative path from 'rel/' to the previous
release one is upgrading from. Running an upgrade will create the
needed files, including a relup and result in a tarball containing
the upgrade being written to 'rel/'. When done it cleans up the
temporary files systools created.

Usage:
$ rebar generate-upgrade previous_release=/path/to/old/version

This also includes a dummy application that can be used to test
upgrades as well as an example.

Special thanks to Daniel Reverri, Jesper Louis Andersen and
Richard Jones for comments and patches.
2011-01-27 18:37:39 +01:00
Tuncer Ayaz
3fd3bfc89a Fix circular dependency 2011-01-27 15:57:55 +01:00
Dave Smith
a8066b35a9 Use an order independent method for exact matches when looking for command candidates 2011-01-25 21:29:08 -07: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
a3615a4b82 Update getopt 2011-01-23 16:05:25 +01:00
Andrew Tunnell-Jones
b52b82cc29 Add support for arch specific port_sources
On one project I have a need to specify port_sources on R14 only
and on another different project port_sources for Darwin and Linux.
To this end add support to handle tuples of the form
{ArchRegex, PortSource} in the port_sources list, eg:

    {port_sources, [{"R14", ["c_src/*.c"]}]}.
2011-01-17 16:57:46 +01:00
Tuncer Ayaz
8940f07801 Fix underspec (thanks Kostis Sagonas) 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
932eb2e343 Simplify rebar_core 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
ebcae06928 Fix grep invocations 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
bb6731208e Fix indentation in rebar_ct 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
3b0568ebb7 Simplify and cleanup rebar_templater 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
150c9d0b47 Simplify and cleanup rebar_xref 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
e4036cbe56 Apply Tidier suggestions 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
d922985b36 Fix typos 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
58fd80917a Fix file existence checks 2011-01-13 17:39:14 +01:00
Tuncer Ayaz
a8870807fc Fix code clarity 2011-01-13 17:39:14 +01:00
Joseph Wayne Norton
5b05e54cda Add otp_release to platform string 2011-01-09 16:06:51 +01:00
Tuncer Ayaz
5a37149642 Fix Dialyzer warning 2011-01-09 09:46:08 +01:00
Tuncer Ayaz
220eec71f6 Remove unused fun rebar_utils:get_os/0 2011-01-09 09:45:43 +01:00
Tuncer Ayaz
46b2c0612e Fix bug 770 2011-01-08 19:20:40 +01:00
Tuncer Ayaz
422beee324 Return more descriptive dependency errors 2011-01-06 15:50:16 +01:00
Juhani Rankimies
9441251f9f Use file:change_mode/2 instead of invoking chmod 2011-01-06 15:02:23 +01:00
Juhani Rankimies
52ca7795fe Unify executable invocation
Add flags to rebar_utils:sh to control output and error handling.
Replace calls to os:cmd with calls to rebar_utils:sh.
2011-01-06 15:02:19 +01:00
Charles McKnight
f83f18eb3b Fix error where ebin was created as a file
This patch remedies an issue where the ebin directory would be
erroneously created as a file by the first "mv" command in
rebar_protobuffs_compile.erl [line 106] if the ebin file did not
exist at the root application level.

In essence, the patch ensures that the ebin directory exists at
the application directory level before any "mv" commands are
executed. The following code was inserted at line 106:

    ok = filelib:ensure_dir(filename:join("ebin","dummy")),
2011-01-06 12:30:32 +01:00
Tuncer Ayaz
9c0d51bc0b Fix order of erl_opts to be more accurate 2011-01-04 11:27:17 +01:00
Joseph Wayne Norton
a529577b74 Remove erlc target after fail_on_warning failure
Prevent overlooking a compilation warning by removing the target beam
file after fail_on_warning failure.
2010-12-27 13:29:53 +01:00
Anthony Ramine
008dcb8542 Add abnfc support
abnfc is an ABNF parser generator.
Options are:
	- doc_root (defaults to "src")
	- out_dir (defaults to "src")
	- source_ext (defaults to ".abnf")
	- module_ext (defaults to "")
2010-12-22 17:57:21 +01:00
David Reid
63d5ceb61d Support single level of nested template variables
Add support for defining template variables of the following form:

{variables, [{appid, "mochiwebapp"},
         {author, "Mochi Media <dev@mochimedia.com>"},
         {year, "2010"},
         {version, "0.1"},
         {port, 8080},
         {dest, "{{appid}}"}]}.

Where dest may be overridden on the commandline but will default to
being the appid. Mochiweb uses this so that we can create new
projects from the template in a configurable directory.

So

$ rebar create template=mochiwebapp dest=foo appid=bar

I thought about special casing dest but figured it might be generally
useful to be able to nest template vars.

However this patch only does one level of resolution. So if

{variables, [{foo, "{{bar}}"},
                {bar, "{{foo}}"}]}.

then bar will end up being the literal string {{bar}} and foo the
literal string {{foo}}.
2010-12-22 17:56:52 +01:00
Dave Smith
9b0d35d986 Adding support for app_vars in external file 2010-12-20 08:55:31 -07:00
Tuncer Ayaz
d8e50e8c2d Implement update-deps and disable auto update 2010-12-17 12:39:50 +01:00
Anthony Ramine
9ecc3455bf Fix typo in rebar_erlydtl_compiler 2010-12-16 15:40:15 +01:00
klaar
48ee15c7e7 Fix conversion of boolean atom to string
mustache:render("{{banan}}", dict:from_list([{banan, true}])).

** exception error: no function clause matching mustache:escape(true,[])
     in function  erl_eval:do_apply/5
     in call from erl_eval:expr/5
     in call from erl_eval:expr/5
     in call from mustache:render/3
2010-12-09 23:28:05 +01:00
Benjamin Nortier
ab4e0a32ab Add rebar code path to common test code path 2010-12-09 00:20:54 +01:00
Tuncer Ayaz
07269ebdb9 Add VCS dir check for bzr and svn 2010-12-07 19:32:58 +01:00
Dave Smith
3e12630f23 Check for VCS directory before attempting source update. 2010-12-07 10:38:00 -07:00
Tuncer Ayaz
0bb429c197 Fix code clarity 2010-12-07 01:03:17 +01:00
Mihai Balea
837192e34e Fix compilation of *_first_files
- Check the existence of first_files and fail if they are not present
 - Get first_files lists from local instead of inherited config
   definitions, since they only make sense in the local context
2010-12-01 17:30:23 +01:00
Adam Kocoloski
8118083122 Return descriptive errors from is_app_available() 2010-11-30 01:18:48 +01:00
Joseph Wayne Norton
d24021f4e3 Add new global flag 'debug_info' to erlc_compiler
Using rebar's commandline, enable/disable 'debug_info' for
compilation. This feature if added to all rebar compilers could help
simplify and standardize this common use case for all rebar build
targets.
2010-11-30 00:24:20 +01:00
Joseph Wayne Norton
e36783112d Support dialyzer plt paths having "~/" as a prefix
e.g. {dialyzer_opts, [{plt, "~/.dialyzer_plt.R14B"}]}.
2010-11-23 19:03:56 +01:00
Juhani Rankimies
fe664e8c50 Fix bug 805
Use rebar_utils:find_executable/1 that wraps the
path in quotes to make it work even if it contains
whitespace.
2010-11-22 23:48:28 +01:00
Misha Gorodnitzky
064195dc5a Fix git tag and branch dependency handling
Change git downloads and updates to not create branches and fix git
tag handling.
2010-11-20 23:32:49 +01:00
Daniel Néri
72cdcd9573 Remove mention of "clean" command from rebar_edoc 2010-11-14 13:35:14 +01:00
Daniel Néri
6785c16f02 Fix EDoc syntax errors 2010-11-14 13:32:30 +01:00
Anders
513ae33c5c Add possibility to specify rebar config for the "main" application 2010-11-09 20:19:38 -07:00