From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id DE9BDE020F for ; Wed, 25 Nov 2020 14:05:13 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=fabrice.le_fessant@origin-labs.com; spf=Pass smtp.mailfrom=fabrice.le_fessant@origin-labs.com; spf=None smtp.helo=postmaster@relay5-d.mail.gandi.net Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of fabrice.le_fessant@origin-labs.com) identity=pra; client-ip=217.70.183.197; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="fabrice.le_fessant@origin-labs.com"; x-sender="fabrice.le_fessant@origin-labs.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of fabrice.le_fessant@origin-labs.com designates 217.70.183.197 as permitted sender) identity=mailfrom; client-ip=217.70.183.197; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="fabrice.le_fessant@origin-labs.com"; x-sender="fabrice.le_fessant@origin-labs.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@relay5-d.mail.gandi.net) identity=helo; client-ip=217.70.183.197; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="fabrice.le_fessant@origin-labs.com"; x-sender="postmaster@relay5-d.mail.gandi.net"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AcKeTqhWa/i44UTdoVEATUkf7y8jV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYZRSDtKdThVPEFb/W9+hDw7KP9fy5BipZvM7K7CtKWacPfidNsd?= =?us-ascii?q?8RkQ0kDZzNImzAB9muURYHGt9fXkRu5XCxPBsdMs//Y1rPvi/6tmZKSV3wOgVv?= =?us-ascii?q?O+v6BJPZgdip2OCu4Z3TZBhDiCagbb9oIxi6sAfcutMLjYZiNqo9xRTEr3VVcO?= =?us-ascii?q?lK2G1kIk6ekQzh7cmq5p5j9CpQu/Ml98FeVKjxYro1Q79FAjk4Km45/MLkuwXN?= =?us-ascii?q?QguJ/XscT34ZkgFUDAjf7RH1RYn+vy3nvedgwiaaPMn2TbcpWTS+6qpgVRHlhD?= =?us-ascii?q?sbOzM/7WrakdJ7gr5Frx29phx/24/Ub5+TNPpiZaPWYNcWSXNcUspNSyBNB4Wx?= =?us-ascii?q?YIwSAeocJuZYt5fyqEcSrRWwAgmsAfngyj5OhnTr2aE33OAsHQTA0Qc9HdwBrW?= =?us-ascii?q?7Uoc36O6kSX+67z7TGwyvfYP5NxTfx9JLFfgw9rf2QX799d9fax0k1FwPCi1Wd?= =?us-ascii?q?sYzrMCmO2eQXsmiU8/RvXv+phWE5tgp/oiagxtw3iobTgIIV1k3P+CJ3wIkvPt?= =?us-ascii?q?K4Uk97bsK6H5dKsyGVKZN5Qs08TGFzoyY10LsGuYKgcSgN0pQnxhHfa/2Bc4SR?= =?us-ascii?q?5hLsTv2eISxiiH15f7K/gg+//E69weLzSse6ykxFrjZZktbSrHAN0QTe59WbRv?= =?us-ascii?q?Zj/kmsxyqD2x7P5u9EPUw6mqTWJZE/zrM/mJcev0XOEjL0lUjokKKbaksq9+i0?= =?us-ascii?q?5urnfLjquJ+ROo5ohgz4L68glMu/AeEiPQgPWWiW4eu81Lz//U35XbVFlec6kq?= =?us-ascii?q?jesJ3cOM8Vpba5DhdL3oo+6RuzFTWr3MgCkXUaL19IdgiLg5XtNlzMOPz0E+uz?= =?us-ascii?q?jlC2nDpox/3KJKPtDonOI3TZn7rsc7Bw4FNGxgUp19BQ/ZdUB6kBIP3tXk/xs8?= =?us-ascii?q?TVDgUnPAyw2enmCNVw2poDVm6VB6+WKqLSsVuS6uIgOeaMYpIauDfnJ/gj+fHu?= =?us-ascii?q?kWc1mV4bfaa3wZsacG60EulkLkmDY3fgns0NHXoJswcwVuDmlVmPXDxLa3a3Ra?= =?us-ascii?q?085zU7CIy8DYfEQ4CgmLKB0z2gEZ1MZ2BJFk6DHW3sd4qaQ/gMZjydItR6kjMe?= =?us-ascii?q?U7ihV5Qs1Ra0tA/7xLpnL+zU9jQctZ35z9d1/Pffmg019TxxF8idyX2CT3lonm?= =?us-ascii?q?MUQD87xLxwrlZ4yleHyKR4h/1YFcdP5/5SSQc7NZvcz/RgBNzoWwLBeM2JSFe8?= =?us-ascii?q?Tdm8DzExVIF5/9hbRE10HtHqqxnC2yusDPcxlqeXTMg/+6fYmnzwPNpVynDc1a?= =?us-ascii?q?BngUNwEeVVMmjzqKd17QnYCsbtng23mr2xfKIAlHrD/W2ZzGGD+kVVZwB9Sr7M?= =?us-ascii?q?W2w3YVHXotX/o0fLRaToArMiZFgSgfWeI7dHP4W6xW5NQ+3ubZGDOjvgyVf1Pg?= =?us-ascii?q?6Bw/a3VKSvfmwc2CvHD01dzFIU53eJNA57Ai6ruCTVCzk8TAuzMXOpyvF3rTaA?= =?us-ascii?q?dmFx1xuDNhIz0KC09R8TwPiVQehV1bUB6n949mdEWW2l1teTMOKu4gpseKIGPI?= =?us-ascii?q?En7VNOxD+cu0p4N52kaa9rgFIfNQJ6oxG22g=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B4AgCdVb5fh8W3RtligQmBUYMcVzE4h?= =?us-ascii?q?DOtBQNUCwEDAQ0fDgIEAQGGewIdBwEENQUNAhABAQUBAQECAQMDBAETAQEBAQs?= =?us-ascii?q?NCQgphWgMgjcpgysRfA8CJgIkEgEFASI1gwQBgwYEnwGCHYEEPYszgTKJKIE8B?= =?us-ascii?q?oEOKo1AghuBETaDGoEXgUYCgVCDJoJfBLhUB4JxiRaSEiKDG55xAYtSgyOGbYk?= =?us-ascii?q?EiAWJI4RTDyOBSUyBLU0jgQEGgjNPFwINjjmGO4d1QWkCBgoBAQMJfI0NgTMBg?= =?us-ascii?q?RABAQ?= X-IPAS-Result: =?us-ascii?q?A0B4AgCdVb5fh8W3RtligQmBUYMcVzE4hDOtBQNUCwEDAQ0?= =?us-ascii?q?fDgIEAQGGewIdBwEENQUNAhABAQUBAQECAQMDBAETAQEBAQsNCQgphWgMgjcpg?= =?us-ascii?q?ysRfA8CJgIkEgEFASI1gwQBgwYEnwGCHYEEPYszgTKJKIE8BoEOKo1AghuBETa?= =?us-ascii?q?DGoEXgUYCgVCDJoJfBLhUB4JxiRaSEiKDG55xAYtSgyOGbYkEiAWJI4RTDyOBS?= =?us-ascii?q?UyBLU0jgQEGgjNPFwINjjmGO4d1QWkCBgoBAQMJfI0NgTMBgRABAQ?= X-IronPort-AV: E=Sophos;i="5.78,368,1599516000"; d="scan'208";a="479386590" X-MGA-submission: =?us-ascii?q?MDEkbUlwbIoKcRPE55GC8LU8pMzEuntdXgSYpW?= =?us-ascii?q?nT7ugs6gYUx6CaZ3e9V2xovMt7vw/LbwOqSEcEk0LVGaQmDLHi6lCEFO?= =?us-ascii?q?5Vp2FO4afUWPGrR+8SqjCm5GpMWnky2gm65anb5uiWXpbr4onMJ6mRyY?= =?us-ascii?q?yKsMxYEIVVCuH3CaF/HJr66A=3D=3D?= Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Nov 2020 14:05:13 +0100 X-Originating-IP: 209.85.208.43 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (Authenticated sender: fabrice.le_fessant@origin-labs.com) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id BA6A91C0014 for ; Wed, 25 Nov 2020 13:05:12 +0000 (UTC) Received: by mail-ed1-f43.google.com with SMTP id y4so2464718edy.5 for ; Wed, 25 Nov 2020 05:05:12 -0800 (PST) X-Gm-Message-State: AOAM530mcvggcTvimVg75yewEITopDSeJP1EjLloE3DRvY50DFq15+hx lVmgifhoQh34LrpIU/y6LKiPefQPyekYc9EN2Zk= X-Google-Smtp-Source: ABdhPJxJolAEf18ULS9OLRH/yyKfIpAR0gl9Zq1Q9XMwBPSQn1oLI/Z80uGR9RNPz52xolc/PLawl+/lCLOcH01ub+8= X-Received: by 2002:a05:6402:176e:: with SMTP id da14mr3397791edb.245.1606309512115; Wed, 25 Nov 2020 05:05:12 -0800 (PST) MIME-Version: 1.0 From: Fabrice Le Fessant Date: Wed, 25 Nov 2020 14:05:01 +0100 X-Gmail-Original-Message-ID: Message-ID: To: Ocaml Mailing List Content-Type: text/plain; charset="UTF-8" Subject: [Caml-list] [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. 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