Hi,
I am happy to announce the first release of drom
, version 0.2.0, a
tool to create and manage OCaml projects. drom
is a simple layer on
top of opam
and dune
, with project and package descriptions
written in TOML syntax. It is an attempt at providing a cargo
-like
experience for developers, with builtin support for standard OCaml
tools (opam
, dune
, odoc
, etc.) and source managers (Github for
now, with Github Actions and Github Pages).
There are mainly 2 use-cases of drom
:
-
Scafolding tool:
drom
makes it easy to create OCaml projects by
generating all the files needed for a standard OCaml project. It
creates files foropam
anddune
, formatters (ocp-index
and
ocamlformat
), documentation (sphinx
andodoc
), testing
directories and Github CI. Once these files have been created,
drom
is not needed anymore and you can keep using your preferred
tools. -
Management tool:
drom
can also be used to keep managing the
project afterwards. It has commands likedrom build
to build the
project, automatically installing a local switch with all needed
dependencies,drom doc
to generate the documentation anddrom test
to execute tests.drom
works as a simple interface over
opam
anddune
so you almost never need to use them directly.
(this site and the documentation was mostly generated by drom
itself)
drom
is available in the official opam repository.
Examples:
$ drom new mylib --skeleton library // generate library project
// or
$ drom new hello // generate program project
$ cd hello
$ emacs drom.toml // edit the project description
$ drom project // update files
$ drom build // create local switch and build
// or
$ drom build --switch 4.10.0 // use global switch and build
$ ./hello // run the executable
$ drom test // run tests
$ drom install // install in opam switch
This is an early release to get feedback from users. drom
has been
tested on several of our internal projects, like opam-bin
and
ez_file
.
Since drom
creates local opam
switches for every project by
default (though it is possible to use global switches too), it is
advised to use it with opam-bin
to speed up switch creation and
upgrades.
drom
works by creating projects using “skeletons”, i.e. project and
package templates. drom
comes with a few predefined skeletons
(program
or library
), and allows users to add their own
skeletons. We will of course extend the substitution language to help
users develop such new skeletons.
drom
is a collaborative work between OCamlPro and Origin Labs.
Enjoy !