module OASISPlugin:sig
..end
Plugins creation and management
The whole module is not exported.
module MapPlugin:OASISUtils.MapExt.S
with type key = plugin_kind plugin
module SetPlugin:OASISUtils.SetExt.S
with type elt = plugin_kind plugin
val mem_no_version : OASISTypes.plugin_kind OASISTypes.plugin -> SetPlugin.t -> bool
type'a
setter =OASISTypes.plugin_data Stdlib.ref -> 'a -> unit
type'a
getter =OASISTypes.plugin_data Stdlib.ref -> 'a
type'a
prop ='a setter * 'a getter
typemodul =
string
OCaml module embedded code.
type ('a, 'b)
setup_changes = {
|
chng_moduls : |
(* | OCaml module to be added to setup file | *) |
|
chng_main : |
(* | Main function to be added to BaseSetup.t (i.e. the one that that really do something: configure, build, test...) | *) |
|
chng_clean : |
(* | Function to be called when cleaning | *) |
|
chng_distclean : |
(* | Function to be called when distcleaning | *) |
Describe setup file changes.
type
context_act = {
|
ctxt : |
(* | Global context. | *) |
|
update : |
(* | What is the value given to -setup-update ? | *) |
|
error : |
(* | Are there errors? | *) |
|
files : |
(* | Generated files. | *) |
|
other_actions : |
(* | Extra actions. | *) |
Describe context when applying a plugin.
type('a, 'b)
section_act =context_act ->
OASISTypes.package ->
OASISTypes.common_section * 'a ->
context_act *
(ctxt:OASISContext.t ->
OASISTypes.package -> OASISTypes.common_section * 'a -> string array -> 'b,
ctxt:OASISContext.t ->
OASISTypes.package -> OASISTypes.common_section * 'a -> string array -> unit)
setup_changes
Generator for sections (document, test).
typepackage_act =
context_act ->
OASISTypes.package ->
context_act *
(ctxt:OASISContext.t -> OASISTypes.package -> string array -> unit,
ctxt:OASISContext.t -> OASISTypes.package -> string array -> unit)
setup_changes
Generator with a package argument only (build, install).
type 'a
t
Base types to build plugin: register fields, action, generators...
typeall_t =
OASISTypes.plugin_kind t
Base types for all plugins
val register_quickstart_completion : all_t -> (OASISTypes.package -> OASISTypes.package) -> unit
Register a quickstart completion for this plugin
val quickstart_completion : OASISTypes.plugin_kind OASISTypes.plugin ->
OASISTypes.package -> OASISTypes.package
Get quickstart completion
val register_generator_package : all_t -> 'a prop -> (PropList.Data.t -> 'a) -> unit
Register a generator for package, to store data of a plugin
val generator_package : OASISTypes.plugin_kind OASISTypes.plugin ->
OASISTypes.plugin_data Stdlib.ref -> PropList.Data.t -> unit
Call generator for provided plugin
val register_generator_section : OASISTypes.section_kind ->
all_t -> 'a prop -> (PropList.Data.t -> 'a) -> unit
Register a generator for a section, to store data of a plugin
val generator_section : OASISTypes.section_kind ->
OASISTypes.plugin_kind OASISTypes.plugin ->
OASISTypes.plugin_data Stdlib.ref -> PropList.Data.t -> unit
Call generator for provided plugin on a section
val ls : OASISTypes.plugin_kind -> OASISTypes.name list
List registered plugins of given kind.
val all_plugins : unit -> OASISTypes.plugin_kind OASISTypes.plugin list
All registered plugin.
type
help = {
|
help_template : |
|
help_order : |
val help_default : string list -> help
val register_help : [ `All | `Build | `Configure | `Doc | `Extra | `Install | `Test ]
OASISTypes.plugin -> help -> unit
Register general help. We only rely on plugin name and version. The replacement field will be computed using the kind of the plugin.
val help : [ `All ] OASISTypes.plugin -> help
Get general help text
val to_plugin : 'a t -> 'a OASISTypes.plugin
Convert back to plugin
module type PLUGINS =sig
..end
Module to manage a set of plugins, of the same type.
module Configure:PLUGINS
with type act = package_act and type data = package and type kind = [`Configure]
This module manage plugin that can handle configure step.
module Build:PLUGINS
with type act = package_act and type data = package and type kind = [`Build]
This module manage plugin that can handle build step.
module Doc:PLUGINS
with type act = (doc, unit) section_act and type data = common_section * doc and type kind = [`Doc]
This module manage plugin that can handle building documents.
module Test:PLUGINS
with type act = (test, float) section_act and type data = common_section * test and type kind = [`Test]
This module manage plugin that can handle running tests.
module Install:PLUGINS
with type act = package_act * package_act and type data = package and type kind = [`Install]
This module manage plugin that can handle install/uninstall steps.
module Extra:PLUGINS
with type act = context_act -> package -> context_act and type data = package and type kind = [`Extra]
This module manage plugin that can handle configure step.
val test_field_name : string -> bool
Check that a field name has the form to match a plugin. Don't check that the plugin exists. This functions help to ignore plugin fields.
val builtin : 'a -> OASISTypes.name -> 'a OASISTypes.plugin
Use a builtin plugin (i.e. version = OASIS version).
val add_file : OASISFileTemplate.template ->
context_act -> context_act
Add a template to context
val set_error : bool -> string -> context_act -> context_act
Define an error in context. It doesn't stop processing, it just sets the value.
val plugin_of_string : 'a -> string -> 'a OASISTypes.plugin
Get a plugin from a string
val plugins_of_string : 'a -> string -> 'a OASISTypes.plugin list
Get a list of plugins from a string
val string_of_plugin : 'a OASISTypes.plugin -> string
Get a list of plugins from a string
val plugin_compare : 'a OASISTypes.plugin -> 'a OASISTypes.plugin -> int
Compare plugin, caseless for name and don't take into account version if one is not set.
val plugin_equal : 'a OASISTypes.plugin -> 'a OASISTypes.plugin -> bool
Test equality for plugins, a special case of OASISPlugin.plugin_compare
.
val data_create : unit -> OASISTypes.plugin_data Stdlib.ref
Create storage for plugin data.
val data_new_property : ?purpose:OASISTypes.plugin_data_purpose ->
OASISTypes.plugin_kind OASISTypes.plugin -> 'a prop
data_new_property plg
Create a property that can store plugin data. Beware
that the the couple (plg, purpose)
must be unique.
purpose
: An identifier to make possible the use of several properties
for the same plugin. If not defined, it is derived from the
kind of plugin.