/makorel

makorel - Release OPAM packages easily

Primary LanguageOCamlMIT LicenseMIT

makorel

makorel aims to make release of opam packages easier.

Last documentation update: 2014/07/01 (v0.2.2).

What can it do for me?

Initialize new opam files

makorel -i -v x.y.z [-p /path/to/package/]

Create a directory at /path/to/package/package.x.y.z/ and write descr, opam and url files, pre-filled with every field they may contain as comments.

If no -p /path/to/package/ is provided, makorel will use current directory.

Update an existing package to another version

makorel -v x.y.z [-p /path/to/package/]

Copy information from lastest directory in /path/to/package/package.x.y.z and substitute version number from urls, download archive at the resulting address, and compute checksum of this file.

If no -p /path/to/package/ is provided, makorel will use current directory.

Things you should know before using makorel

makorel assumes that there is consistency in your releases. That means:

  • Releases follow the usual alphabetical order. If it is not the case, makorel might still act as expected, but it is not guaranted.
  • New release will keep the same descr and opam files than the latest previous one. You may want to edit these files after their generation.
  • The url file is generated by:
    • Replacing the version number in the archive url(s).
    • If checksum file is present in original file, downloading the main url file and generating new checksum using Digest. If no archive url is provided before the checksum field, this part will be skipped and no checksum will be generated.

How to install?

$ git clone https://github.com/sagotch/makorel.git
$ cd makorel
$ opam pin add makorel .
$ opam install makorel

Examples

Initializing a package:

$ pwd
/path/to/opam-repo-dev/packages/

$ ls
foo

$ makorel -i -p makorel -v 0.1.0

$ ls -R
.:
foo makorel

[...]

./makorel:
makorel.0.1.0

./makorel:
descr opam url

Updating a package to newer version. Here, you do not need [-p path] because you are in the makorel package root directory:

$ pwd
/path/to/opam-repo-dev/packages/makorel/

$ ls
makorel.0.1.0

$ cat makorel.0.1.0/url
archive: "https://github.com/sagotch/makorel/archive/v0.1.0.tar.gz"
checksum: "c63672aea65d91d087aa86ba19b5f22b"

$ makorel -v 0.2.0

$ ls
makorel.0.1.0 makorel.0.2.0

$ cat makorel.0.2.0/url
archive: "https://github.com/sagotch/makorel/archive/v0.2.0.tar.gz"
checksum: "9ff7a6d5978148f963ec123c3d2db201"