Module B0_opam.File

opam file generation.

Generic representation

type value = [
| `Raw of string(*

A raw, unescaped value

*)
| `B of bool(*

A boolean.

*)
| `S of string(*

A string.

*)
| `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 = [
| `Comment of comment
| `Field of field
| `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.Meta.file_addendum is appended after the definition of these fields.

See Meta.pkg_of_pack for deriving metadata from build packs.