package b0

  1. Overview
  2. Docs
Software construction and deployment kit

Install

dune-project
 Dependency

Authors

Maintainers

Sources

b0-0.0.6.tbz
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0

doc/b0.file/B0_pack/index.html

Module B0_packSource

Build packs.

A build pack gathers a set of build units and attaches metadata to it.

Packs

Sourcetype b0_unit

The type for b0 units. See B0_unit.t.

Sourcetype t

The type for build units.

Sourceval make : ?doc:string -> ?meta:B0_meta.t -> string -> locked:bool -> b0_unit list -> t

make n us is a build pack named n made of build units us and described by doc. locked defaults to false, see locked for the semantics.

Sourceval locked : t -> bool

locked is true if the pack when used in a build mandates a locked build.

Sourceval units : t -> b0_unit list

units p are the units of p.

Metadata derivation

Sourceval find_default : unit -> t option

find_default () is a default pack.

FIXME This is likely not a good idea. There's no context to override the default.

Sourceval derive_synopsis_and_description : t -> B0_meta.t -> B0_meta.t

derive_synopsis_and_description p m if B0_meta.synopsis or B0_meta.description are undefined in m it tries to fill them in from an existing README.md in the scope directory of p. The first marked up section of the file is extracted using B0_adhoc.commonmark_first_section its title is parsed according to the pattern '$(NAME) $(SEP) $(SYNOPSIS)' to get a synopsis line and the body up to the next (sub)section defines the description.

XXX. See if we couldn't define that as a default key value in the future. Though we'd need the def for getting the directory.

b0 definition API

include B0_def.S with type t := t

Named values

Sourceval mangle_basename : string -> string

mangle_basename s is a basename that can be used with define.

Sourceval define : ?doc:string -> ?meta:B0_meta.t -> string -> B0_def.def

define ~doc ~meta n defines name n in the current scope with documentation string doc (defaults to "undocumented")e and metadata meta (defaults to B0_meta.empty). Defining a duplicate value in a scope raises an exception.

Sourceval def_kind : string

def_kind is the kind of defined value.

Sourceval def : t -> B0_def.def

def v is the definition of value v.

Sourceval name : t -> string

name v is v's name. Note that this name changes depending on how the definition is scoped.

Sourceval basename : t -> string

basename v is v's name without the scope.

Sourceval doc : t -> string

doc v is v's documentation string.

Sourceval equal : t -> t -> bool

equal v0 v1 is true iff v0 and v1 have the same name.

Sourceval compare : t -> t -> int

compare v0 v1 sorts v0 and v0 in lexicographical order.

Metadata

Sourceval meta : t -> B0_meta.t

meta v is v's metadata.

Sourceval mem_meta : 'a B0_meta.key -> t -> bool

mem_meta k v is B0_meta.mem k (B0_def.meta v).

Sourceval has_tag : bool B0_meta.key -> t -> bool

has_tag k v is B0_meta.has_tag k (B0_def.meta v).

Sourceval find_meta : 'a B0_meta.key -> t -> 'a option

find_meta k v is B0_meta.find k (B0_def.meta v).

Sourceval find_or_default_meta : 'a B0_meta.key -> t -> 'a

find_or_default_meta k u is B0_meta.find_or_default k (B0_unit.meta u).

Sourceval get_meta : 'a B0_meta.key -> t -> ('a, string) result

get_meta m k u is Ok v if find_meta k u is Some v and a final user friendly error message if None.

Add & Lookup

Sourceval add : t -> unit

add v adds the value v to the list of defined values.

Sourceval fold : (t -> 'a -> 'a) -> 'a -> 'a

fold f acc folds over the list of defined values.

Sourceval list : unit -> t list

list () is the list of defined values.

Sourceval find : string -> t option

find name is the value named name (if any).

Sourceval get : string -> t

get name looks up the value named name and errors the b0 file if there no such name.

Sourceval get_or_suggest : string -> (t, t list) result

get_or_suggest name is the value named name or a (possibly empty) list of suggested values whose name could match name.

Sourceval get_or_hint : string -> (t, string) result

get_or_hint name is the value named name or an error message that indicates that name could not be found with suggested names.

Sourceval get_list_or_hint : all_if_empty:bool -> string list -> (t list, string) result

get_list_or_hint ~all_if_empty names are the value named after names or an error that indicates the names that could not be found with suggested names. If all_if_empty is true an empty ns returns list () sorted by name.

Scope

Sourceval scope_path : t -> string list

scope_path v are the scopes in which v is defined starting from the root. If v is defined in the root scope this is [], if v is defined in a library scope lib this is [[""]; lib]

Sourceval in_root_scope : t -> bool

in_root_scope v is true iff v is in the root scope.

Sourceval in_current_scope : t -> bool

in_current_scope v is true iff v is in the current scope.

Sourceval scope_dir : t -> B0_std.Fpath.t option

scope_dir v is the scope directory in which v is defined.

Sourceval scope_dir' : t -> (B0_std.Fpath.t, string) result

scope_dir' v is like scope_dir but errors with an end-user message if None.

Sourceval in_scope_dir : t -> B0_std.Fpath.t -> B0_std.Fpath.t option

in_scope_dir v path makes the path path absolute with respect to the scope directory in which v is defined. This is None if v's scope has no directory (e.g. on library scopes).

Sourceval in_scope_dir' : t -> B0_std.Fpath.t -> (B0_std.Fpath.t, string) result

in_scope_dir' is like in_scope_dir but errors with an end-user message if None.

Formatters

Sourceval pp_name_str : string B0_std.Fmt.t

pp_name_str v pretty prints value names.

Sourceval pp_name : t B0_std.Fmt.t

pp_name v formats v's name.

Sourceval pp_doc : t B0_std.Fmt.t

pp_doc formats v's doc string.

Sourceval pp_synopsis : t B0_std.Fmt.t

pp_synopsis formats v's name and its doc string.

pp formats v 's name, its doc string and its metadata dictionary.

Value set and maps

Sourcemodule Set : Set.S with type elt = t

Value sets.

Sourcemodule Map : Map.S with type key = t

Value maps.