OASISFileTemplateGenerate files replacing parts of it
This module allow to generate files using template. Each template files is split into three parts: an header, a body and a footer. We target at changing the body part. If target file already exists, we load the header and the footer from it. We merge the three parts and repalce the target files.
There are some safety limits:
The whole module is not exported.
val comment_ml : comment.ml comments.
val comment_sh : commentShell comments.
val comment_makefile : commentMakefile comments.
val comment_ocamlbuild : commentOCamlbuild comments.
val comment_bat : comment.bat file comments.
val comment_meta : commentMETA file comments.
val comment_markdown : commentMarkdown comments.
type template = {fn : OASISUnixPath.host_filename;comment : comment;header : line list;body : body;perm : int;important : bool;Determine if should be kept in dynamic mode.
*)disable_oasis_section : bool;Determine if OASIS section comments and digest should be omitted.
*)}val template_make :
OASISUnixPath.host_filename ->
comment ->
line list ->
line list ->
line list ->
templatetemplate_make fn cmt header body footer Create a template for which target file is fn.
val template_of_string_list :
ctxt:OASISContext.t ->
template:bool ->
?disable_oasis_section:bool ->
OASISUnixPath.host_filename ->
comment ->
line list ->
templatetemplate_of_string_list ~ctxt ~template ~pure fn cmt lst Split the list lst into a header, body and footer, using comment cmt to determine each part. Set ~template if this is an embedded template (i.e. not a file loaded from disk). If ~disable_oasis_section is set, then the list is processed on the assumption that there is no header and footer. See template_make for other options.
val template_of_mlfile :
OASISUnixPath.host_filename ->
line list ->
line list ->
line list ->
templatetemplate_of_ml_file fn Create an OCaml file template taking into account subtleties, like line modifier. See template_make for other options.
type file_generate_change = | Create of OASISUnixPath.host_filenameCreate fn, fn is the target file, nothing exists before
| Change of OASISUnixPath.host_filename * OASISUnixPath.host_filename optionChange (fn, bak), bak is the backup file, an existing file has been changed.
| NoChangeNothing done, the file doesn't need to be updated
*)Describe what has been done to generate a file out of a template.
val file_rollback : ctxt:OASISContext.t -> file_generate_change -> unitReset to pristine a generated file.
val file_generate :
ctxt:OASISContext.t ->
?remove:bool ->
backup:bool ->
template ->
file_generate_changeGenerate a file using a template. Only the part between OASIS_START and OASIS_STOP will be really replaced if the file exists. If the file doesn't exist use the whole template. If ~remove is true, then an existing file will be deleted iff the template body is [] and the header and footer of the file match the template's (used by the -remove option for setup-clean).
exception AlreadyExists of OASISUnixPath.host_filenameTry to add a file that is already in the set
val create :
disable_oasis_section:OASISUnixPath.unix_filename list ->
unit ->
templatesNo generated template files with the given set of files with the OASIS section disabled.
val find : OASISUnixPath.host_filename -> templates -> templateFind a generated template file.
val remove : OASISUnixPath.host_filename -> templates -> templatesRemove a generated template file.