[ANN] drom.0.2.0: OCaml Project Manager, beta release

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 for opam and dune, formatters (ocp-index and
    ocamlformat), documentation (sphinx and odoc), 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 like drom build to build the
    project, automatically installing a local switch with all needed
    dependencies, drom doc to generate the documentation and drom test to execute tests. drom works as a simple interface over
    opam and dune 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 !

25 Likes