caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Fabrice Le Fessant <fabrice.le_fessant@origin-labs.com>
To: Ocaml Mailing List <caml-list@inria.fr>
Subject: [Caml-list] [ANN] drom.0.2.0: OCaml Project Manager, beta release
Date: Wed, 25 Nov 2020 14:05:01 +0100	[thread overview]
Message-ID: <CAHvkLrN_Oy20EnnTf8Ukhza06TeRh1hOzBQZUu3v35qPNZaH+Q@mail.gmail.com> (raw)

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

             reply	other threads:[~2020-11-25 13:05 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-25 13:05 Fabrice Le Fessant [this message]
2020-11-25 13:21 ` François Bobot
2020-11-25 21:10   ` Fabrice Le Fessant

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHvkLrN_Oy20EnnTf8Ukhza06TeRh1hOzBQZUu3v35qPNZaH+Q@mail.gmail.com \
    --to=fabrice.le_fessant@origin-labs.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).