148 lines
5.4 KiB
Markdown
148 lines
5.4 KiB
Markdown
# Babel
|
|
|
|
Babel is a *beta*-grade *package manager* for the [Nimrod programming
|
|
language](http://nimrod-lang.org).
|
|
|
|
## Installation
|
|
|
|
You will need the latest [Nimrod compiler from
|
|
github](https://github.com/Araq/Nimrod) to compile babel (version 0.9.2 may
|
|
work).
|
|
|
|
Once you have the latest Nimrod compiler you can compile babel by executing:
|
|
``nimrod c -d:release babel``. Then simply install babel by executing ``./babel
|
|
install``. You should then add ``~/.babel/bin`` to your ``$PATH``.
|
|
|
|
**Note**: On **Windows** you must rename ``babel.exe`` to ``babel1.exe`` and
|
|
subsequently run ``babel1.exe install``. This is because Windows will lock
|
|
the process which is being run.
|
|
|
|
## Babel's folder structure and packages
|
|
|
|
Babel stores everything that has been installed in ``~/.babel`` on Unix systems
|
|
and in your ``$home/.babel`` on Windows. Libraries are stored in
|
|
``$babelDir/pkgs``, and binaries are stored in ``$babelDir/bin``. Most Babel
|
|
packages will provide ``.nim`` files and some documentation. The Nimrod
|
|
compiler is aware of Babel and will automatically find the modules so you can
|
|
``import modulename`` and have that working without additional setup.
|
|
|
|
However, some Babel packages can provide additional tools or commands. If you
|
|
don't add their location (``$babelDir/bin``) to your ``$PATH`` they will not
|
|
work properly and you won't be able to run them.
|
|
|
|
## Babel usage
|
|
|
|
Once you have Babel installed on your system you can run the ``babel`` command
|
|
to obtain a list of available commands.
|
|
|
|
### babel update
|
|
|
|
The ``update`` command is used to fetch and update the list of Babel packages
|
|
(see below). There is no automatic update mechanism, so you need to run this
|
|
yourself if you need to *refresh* your local list of known available Babel
|
|
packages. Example:
|
|
|
|
$ babel update
|
|
Downloading package list from https://.../packages.json
|
|
Done.
|
|
|
|
Some commands may remind you to run ``babel update`` or will run it for you if
|
|
they fail.
|
|
|
|
### babel install
|
|
|
|
The ``install`` command will download and install a package. You need to pass
|
|
the name of the package (or packages) you want to install. If any of the
|
|
packages depends on other Babel packages Babel will also fetch them for you.
|
|
Example:
|
|
|
|
$ babel install nake
|
|
Downloading nake into /tmp/babel/nake...
|
|
Executing git...
|
|
...
|
|
nake installed successfully
|
|
|
|
Babel always fetches and installs the latest version of a package. If you
|
|
already have that version installed it will ask to overwrite your local copy.
|
|
|
|
If you don't specify a parameter and there is a ``package.babel`` file in your
|
|
current working directory Babel will ask if you want to install that. This can
|
|
be useful for developers who are testing locally their ``.babel`` files before
|
|
submitting them. See [developers.markdown](developers.markdown) for more info
|
|
on this.
|
|
|
|
### babel build
|
|
|
|
The ``build`` command is mostly used by developers who want to test building
|
|
their ``.babel`` package. The ``install`` command calls ``build`` implicitly,
|
|
so there is rarely any reason to use this command directly.
|
|
|
|
### babel list
|
|
|
|
The ``list`` command will display the known list of packages available for
|
|
Babel.
|
|
|
|
### babel search
|
|
|
|
If you don't want to go through the whole output of the ``list`` command you
|
|
can use the ``search`` command specifying as parameters the package name and/or
|
|
tags you want to filter. Babel will look into the known list of available
|
|
packages and display only those that match the specified keywords (which can be
|
|
substrings). Example:
|
|
|
|
$ babel search math
|
|
linagl:
|
|
url: https://bitbucket.org/BitPuffin/linagl (hg)
|
|
tags: library, opengl, math, game
|
|
description: OpenGL math library
|
|
license: CC0
|
|
|
|
extmath:
|
|
url: git://github.com/achesak/extmath.nim (git)
|
|
tags: library, math, trigonometry
|
|
description: Nimrod math library
|
|
license: MIT
|
|
|
|
### babel path
|
|
|
|
The babel ``path`` command will shows the absolute path to the installed
|
|
packages matching the specified parameters. Since there can be many versions of
|
|
the same package installed, the ``path`` command will always use the latest
|
|
version. Example:
|
|
|
|
$ babel path argument_parser
|
|
/home/user/.babel/pkgs/argument_parser-0.1.2
|
|
|
|
Under Unix you can use backticks to quickly access the directory of a package,
|
|
which can be useful to read the bundled documentation. Example:
|
|
|
|
$ pwd
|
|
/usr/local/bin
|
|
$ cd `babel path argument_parser`
|
|
$ less README.md
|
|
|
|
## Packages
|
|
|
|
Babel works on git repositories as its primary source of packages. Its list of
|
|
packages is stored in a JSON file which is freely accessible in the
|
|
[nimrod-code/packages repository](https://github.com/nimrod-code/packages).
|
|
This JSON file provides babel with the required Git URL to clone the package
|
|
and install it. Installation and build instructions are contained inside a
|
|
ini-style file with the ``.babel`` file extension. The babel file shares the
|
|
package's name.
|
|
|
|
## Contribution
|
|
|
|
If you would like to help, feel free to fork and make any additions you see fit
|
|
and then send a pull request. If you are a developer willing to produce new
|
|
Babel packages please read the [developers.markdown file](developers.markdown)
|
|
for detailed information.
|
|
|
|
If you have any questions about the project you can ask me directly on github,
|
|
ask on the nimrod [forum](http://forum.nimrod-code.org), or ask on Freenode in
|
|
the #nimrod channel.
|
|
|
|
## About
|
|
|
|
Babel has been written by [Dominik Picheta](http://picheta.me/) and is licensed
|
|
under the BSD license (Look at license.txt for more info).
|