Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases.
Find a file
Alexey Romanov 9da87854f2 Support passing plain arguments to appname start
Currently with default simplenode template, `appname console other_args`
will pass ["console", "other_args"] as plain arguments. But
`appname start other_args` effectively calls `appname console`. This
patch replaces this call with `appname console other_args`.
2011-03-05 14:27:07 +03:00
ebin Add 'generate-appups' command 2011-02-15 18:33:18 +01:00
include Add -spec support to rebar_ct command line 2011-02-21 15:08:24 +01:00
inttest Add -spec support to rebar_ct command line 2011-02-21 15:08:24 +01:00
priv Support passing plain arguments to appname start 2011-03-05 14:27:07 +03:00
src Fix bug that causes appup generation to fail 2011-03-03 16:02:37 -08:00
test Update runner script in test project 2011-03-04 19:39:45 +01:00
.gitignore Ignore .eunit 2010-12-08 12:05:02 +01:00
.hgignore Add .gitignore to the source tree 2010-10-03 16:00:15 +02:00
.hgtags Added tag RELEASE-1 for changeset e8747041ef63 2009-12-18 15:11:54 -07:00
bootstrap Clean up emacs file local variables 2011-01-31 17:55:36 +01:00
bootstrap.bat add bat scripts for bootstrap and rebat (windows doesn't understand shebang), make bootstrap work on windows 2010-08-02 20:35:26 +03:00
LICENSE Added HACKING, LICENSE and THANKS files 2009-12-31 20:31:22 +01:00
Makefile Add "clean" target 2010-06-08 13:23:36 -06:00
NOTES.org Initial commit 2009-11-25 15:23:42 -07:00
README.md Update README: coding style 2011-01-17 12:03:30 +01:00
rebar.bat Set local scope for env vars in rebar.bat 2011-01-12 17:17:34 +01:00
rebar.config Enable xref checks on rebar 2010-04-09 09:25:08 -06:00
rebar.config.sample Document eunit_first_files 2011-02-13 18:11:29 +01:00
THANKS Add Christopher Brown to THANKS file 2011-03-03 17:40:24 +01:00

rebar

rebar is an Erlang build tool that makes it easy to compile and
test Erlang applications, port drivers and releases.

rebar is a self-contained Erlang script, so it's easy to distribute or even
embed directly in a project. Where possible, rebar uses standard Erlang/OTP
conventions for project structures, thus minimizing the amount of build
configuration work. rebar also provides dependency management, enabling
application writers to easily re-use common libraries from a variety of
locations (git, hg, etc).

Building

Information on building and installing Erlang/OTP can be found in the INSTALL.md document.

Dependencies

To build rebar you will need a working installation of Erlang R13B03 (or later).

Should you want to clone the rebar repository, you will also require git.

Downloading

Clone the git repository:

$ git clone git://github.com/basho/rebar.git

Building rebar

$ cd rebar/
$ ./bootstrap
Recompile: src/getopt
...
Recompile: src/rebar_utils
==> rebar (compile)
Congratulations! You now have a self-contained script called "rebar" in
your current working directory. Place this script anywhere in your path
and you can use rebar to build OTP-compliant apps.

Contributing to rebar

Coding style

Do not introduce trailing whitespace.

Do not introduce lines longer than 80 characters.

Indentation

To have consistent indentation we have vi modeline/emacs local variable
headers in rebar's source files. This works automatically with vi.
With Emacs you have to declare 'erlang-indent-level set to 4
as a safe local variable value. If not configured Emacs will prompt
you to save this as part of custom-set-variables:

'(safe-local-variable-values (quote ((erlang-indent-level . 4))))

You can also tell Emacs to ignore file variables:

(setq enable-local-variables nil
      enable-local-eval nil)

Writing Commit Messages

Structure your commit message like this:

One line summary (less than 50 characters)

Longer description (wrap at 72 characters)

Summary

  • Less than 50 characters
  • What was changed
  • Imperative present tense (fix, add, change)

Fix bug 123
Add 'foobar' command
Change default timeout to 123

  • No period

Description

  • Wrap at 72 characters
  • Why, explain intention and implementation approach
  • Present tense

Atomicity

  • Break up logical changes
  • Make whitespace changes separately

Dialyzer and Tidier

Before you submit a patch check for discrepancies with Dialyzer:

$ cd rebar/
$ ./bootstrap debug
$ dialyzer ebin -Wunmatched_returns -Werror_handling -Wrace_conditions -Wunderspecs

The following discrepancies are known and safe to ignore:

rebar_templater.erl:249: The call rebar_templater:consult(
                                Cont1::erl_scan:return_cont(),'eof',
                                Acc::[any()])
                         contains an opaque term as 1st argument when terms
                         of different types are expected in these positions
rebar_utils.erl:144: Call to missing or unexported function escript:foldl/3
rebar_utils.erl:165: The created fun has no local return

It is strongly recommended to check the code with Tidier.
Select all transformation options and enable automatic transformation.
If Tidier suggests a transformation apply the changes manually to the source code.
Do not use the code from the tarball (out.tgz) as it will have white-space changes
applied by Erlang's pretty-printer.