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:
drommakes it easy to create OCaml projects by
generating all the files needed for a standard OCaml project. It
creates files foropamanddune, formatters (ocp-indexand
ocamlformat), documentation (sphinxandodoc), testing
directories and Github CI. Once these files have been created,
dromis not needed anymore and you can keep using your preferred
tools. -
Management tool:
dromcan also be used to keep managing the
project afterwards. It has commands likedrom buildto build the
project, automatically installing a local switch with all needed
dependencies,drom docto generate the documentation anddrom testto execute tests.dromworks as a simple interface over
opamandduneso 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 !