package drom

  1. Overview
  2. Docs


  • Improve templates to inherit values from drom.toml/package.toml inherited files

  • drom_toml: because drom requires additional features in toml that do not fit in the standard toml library, we forked toml.0.7.1 into drom_toml. Additional features:

    • New operators: == (init value if never set), := (override value), -= (delete/clear value)

  • Fix ocamlformat stuck at 0.15

  • Make .ocamlformat-ignore always ignore share-dirs


  • temporary version, never released


  • Generate opam files in opam/ instead of top directory

  • drom install PACKAGES where PACKAGES is a limited set of project packages

  • drom build tries to update program files by default, unless auto-upgrade: false is set in user configuration:

    auto-upgrade = false


  • Add --edition and --min-edition to drom new and drom project

  • Add support for optional dependencies: lib = { opt = true, version = "3.1" }

  • Add @ before skip tags: skip = [ "@test" ]

  • drom uninstall: also unpin all project packages

  • Add support for optional packages: optional = true

  • Add support for preprocessor preprocess = "pps pgocaml_ppx"

v0.4.0 ( 2021-05-11 )

  • New [fields] in package.toml:

    • 'gen-opam' to generate the opam file of a virtual package. Possible values are "all" (all sub-packages are dependencies), "some" (you need to specify the dependencies in [dependencies]) or "none" (no opam file is generated, the default).

    • 'no-opam-test = "no"' to disable tests in the opam package

    • 'no-opam-doc = "no"' to disable doc in the opam package

  • Add 'rust_binding' skeleton

  • New env variable DROM_VERBOSE_SUBST to debug substitutions

  • New 'skip = [ "file"...]' in package.toml to skip files in src/PACKAGE/

  • New subcommand 'list': "drom list" will list all known skeletons. If an argument is provided, it is either "all", or one of "projects" or "packages".


  • More skeletons

v0.2.1 ( 2020-11-25 )

  • Add table [file] in skeleton.toml to specify flags for skeleton files from the outside (useful for binary files for example). Flags can be file (name of file), create (create only if non-existing), skips (list of tags forcing skip), subst (do not perform substitution)

  • Extend skeleton substitution language with ![if:COND]...![else]...![fi] COND can be gen:SKIPTAG, skip:SKIPTAG, skeleton:is:SKELETON, kind:is:KIND, not:COND, pack (packed)

  • New skeleton projects mini-lib and mini-prg with skip = "test sphinx github docs ocamlformat ocp-indent code"

  • Improved inline documentation of drom.toml and package.toml files

  • New command drom opam-plugin to install drom as an opam plugin, so it can be called opam drom from anywhere.

  • New argument --profile PROFILE to drom build

  • New argument --all to drom test to do the test on all available/compatible opam switches (using dune-workspace context feature)

  • New option dev-tools in ~/.config/drom/config, a list of opam packages that should be installed in the local switch when drom dev-deps is called

  • New environment variable DROM_SHARE_DIR can be used to set the directory containing skeletons and licenses directories (can be used to install drom globally, i.e. DROM_SHARE_DIR=$OPAM_SWITCH_PREFIX/share/drom)

  • New common argument -q or --quiet to set verbosity to 0

  • New command drom dep [DEP]: display and update dependencies with options: --package NAME : only for package NAME --tool : tool dependencies --add : add new dependency --remove : remove dependency --ver VERSION : set version constraint --lib LIBNAME : set dune name --test BOOL : set for-test --doc BOOL : set for-doc

  • New option drom package x --new-file to create a source file with a correct license header

  • Field gen-version = "" in package.toml does not create the file "" anymore, but a script "version.mlt" to generate the file with git information

  • New command drom lock to generate a file ${package}-deps.opam.locked and git add it.

  • New argument --locked to drom build to use ${package}-deps.opam.locked if available.

  • Fixes:

    • OCaml escaping in toml file preventing drom new when utf8 chars are present in email addresses of authors

v0.2.0 ( 2020-11-24 )

  • Fix bug with misnamed 'packages.toml` file in skeletons

v0.1.0 ( 2020-11-23 )

  • First version


Innovation. Community. Security.