Module B0_opam.File

opam file generation.

Generic representation

type value = [
  1. | `Raw of string
    (*

    A raw, unescaped value

    *)
  2. | `B of bool
    (*

    A boolean.

    *)
  3. | `S of string
    (*

    A string.

    *)
  4. | `L of bool * value list
    (*

    A list of values, the boolean indicates whether line-by-line rendering should be forced.

    *)
]

The type for opam values.

type field = string * value

The type for opam fields. The field name and its value.

type section = string * string option * t

The type for opam sections. The section name, the optional string and the contents of the section.

and comment = string

The type for comments.

and item = [
  1. | `Comment of comment
  2. | `Field of field
  3. | `Section of section
]

The type for items.

and t = item list

The type for generic opam file contents.

val v2 : item

v2 is opam-version: "2.0".

val to_string : normalize:bool -> t -> (string, string) Stdlib.result

to_string formats file contents to a string. If normalize is true this calls opam to lint and normalize the result.

Package files

val pkg_of_meta : with_name:bool -> B0_meta.t -> t

pkg_of_meta ~with_name m is an opam package file from m. Here's an account of how opam fields are populated by metadata keys.

Finally the contents of B0_opam.file_addendum is appended after the definition of these fields.

See B0_opam.pkg_meta_of_pack for deriving metadata from build packs.