Metadata.
Typed key-value dictionaries. Values of this type are used with various B0 definitions to specify metadata.
The module defines a few standard keys . The recommended way of formatting constant dictionaries is:
let meta =
let open B0_meta in (* This can be omitted *)
empty
|> add authors ["The project programmers"]
|> add homepage "https://example.org"
|> tag B0_opam.Meta.tag
XXX. They used to be serializable, see if we don't want that again.
KeysThe type for keys whose lookup value is of type 'a
.
The type for metadata bindings.
pp_binding
formats a binding using B0_std.Fmt.field
and the key's value print function.
empty
is the empty metadata.
is_empty m
is true
iff m
is empty.
val mem : 'a key -> t -> bool
mem k m
is true
iff m
has a binding for k
.
val add : 'a key -> 'a -> t -> t
add k v m
is m
with k
bound to v
.
val add_if_some : 'a key -> 'a option -> t -> t
add_if_some k o m
is m
if o
is None
and m
with k
bound to v
if o
is Some v
.
val tag : unit key -> t -> t
val rem : 'a key -> t -> t
rem k m
is m
wihtout a binding for k
.
val find : 'a key -> t -> 'a option
find k m
is the binding of k
in m
(if any).
find_binding k m
is the binding for k
in m
(if any).
val find_binding_by_name : string -> t -> binding option
find_binding_by_name n m
is the binding named n
in m
(if any).
val get : 'a key -> t -> 'a
get k m
is the binding of k
in m
. Raises Invalid_argument
if there is no such binding.
find_binding k m
is the binding for k
in m
. Raises Invalid_argument
if there is no such binding.
val get_binding_by_name : string -> t -> binding
get_binding_by_name n m
is the binding named n
in m
. Raises Invalid_argument
if there is no such binding.
val fold : (binding -> 'a -> 'a ) -> t -> 'a -> 'a
fold f m acc
folds f
over the bindings of m
starting with acc
.
Formattingpp
formats metadata using pp_bindings
.
pp_non_empty
is Fmt.cut
followed by pp
if metadata is non empty and Fmt.nop
otherwise.
Standard keys End-user informationval authors : string list key
authors
describes a list of persons with authorship.
description_tags
describes a list of classification tags used for documentation.
val description : string key
description
is a long description for the entity.
val homepage : string key
issues
is an URI to an issue tracker.
issues
is an URI to an issue tracker.
val licenses : string list key
val maintainers : string list key
maintainers
describe a list of persons with maintainership.
val online_doc : string key
online_doc
is an URI to online documentation.
repo
is an URI to a VCS system.
val synopsis : string key
synopsis
is a one line synopsis for an entity.
bench
tags benchmarking entities.
build
tags build system entities.
dev
tags development entities.
doc
tags documentation entities.
exe
tags executable entities.
test
tags testing entities.
lib
tags library entities.
Entity propertiesval exe_name : string key
exe_name
is an executable name without the platform specific executable extension. FIXME rename that to tool
.
exe_file
is an absolute file path to an executable build by the unit.