caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] [ANN] drom.0.2.0: OCaml Project Manager, beta release
@ 2020-11-25 13:05 Fabrice Le Fessant
  2020-11-25 13:21 ` François Bobot
  0 siblings, 1 reply; 3+ messages in thread
From: Fabrice Le Fessant @ 2020-11-25 13:05 UTC (permalink / raw)
  To: Ocaml Mailing List

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.

https://ocamlpro.github.io/drom

(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 !
--
Fabrice LE FESSANT

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-25 21:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-25 13:05 [Caml-list] [ANN] drom.0.2.0: OCaml Project Manager, beta release Fabrice Le Fessant
2020-11-25 13:21 ` François Bobot
2020-11-25 21:10   ` Fabrice Le Fessant

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).