Drakkar is a package manager for Vala.
It is a mere tool to resolve dependencies, download packages, bundle sources
and resources, and generate appropriate valac flags that can be easily
integrated in any build system.
| Command | Effect |
|---|---|
| search | search for packages from providers |
| install | install the packages described in package.json |
| update | update the dependencies listed in package.json |
| flags | generate valac flags |
| pack | pack the files described in package.json |
| version | print Drakkar's version and exit |
The package specification is compatible with npm's package.json.
{
"name": "view",
"files":
[
"src/**/*.vala",
"data/view.gresources.xml",
"data/*"
],
"dependencies":
{
"glib-2.0": ">=2.32",
"libsoup-2.4": ">=2.50",
"valum": "~0.2"
}
}The install command either download and install all packages described in
package.json dependencies or perform the operation on a specified package
from the providers
- resolve dependencies using backtracking
- download packages from providers (git, svn, bzr, ...)
- extract relevant sources and copy over resources locally in the
depsfolder
Similarly, the update command will update dependencies up to the latest
version that fullfill its predicate.
The flags command generates the appropriate valac flags (--pkg,
--vapidir and --resources) suitable for any build system.
valac $(drakkar flags) src/*.valaThe pack command is a convenient way to create a bundle containing all the
described resources in the package.json into a compact tarball suitable for
providers distribution.
The files object is used to describe what's being included in the package.
All *.vala will be bundled in a compact VAPI format and included with
a --pkg and --vapidir flag.
Resources described in *.gresource.xml files as well as the file itself will
be included in the package.
Dependencies can be provided from different sources:
- local libraries (glib-2.0, libsoup-2.4, ...)
- git repository using a commit hash, a tag or a branch
- GitHub repository using a
username/projectidentifier - local or remote path (see GVfs-supported protocols)
- local or remote bundle, which are simple tarballs
{
"dependencies":
{
"valum-framework/drakkar": "~1.0.0",
"nemequ/vala-extra-vapis": "@master",
"/usr/share/vala/vapis": "*"
}
}Versions are extracted from tags following various conventions:
v1.0.01.0.0
Dependencies that does not provide a package.json will be considered as
a whole: all the sources will be downladed and no particular flags will be
generated.