Module Cmdliner_manpage

Contents

Instructions: Use this module in your project

In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:

  1. Add the following to your project's dependencies/CMakeLists.txt:

    Copy
    DkSDKProject_DeclareAvailable(cmdliner
        CONSTRAINT "= 1.1.1+dune"
        FINDLIBS cmdliner)
    DkSDKProject_MakeAvailable(cmdliner)
  2. Add the Findlib::cmdliner library to any desired targets in src/*/CMakeLists.txt:

    Copy
    target_link_libraries(YourPackage_YourLibraryName
         # ... existing libraries, if any ...
         Findlib::cmdliner)
  3. Click your IDE's Build button

Not using DkSDK?

FIRST, do one or all of the following:

  1. Run:

    Copy
    opam install cmdliner.1.1.1+dune
  2. Edit your dune-project and add:

    Copy
    (package
      (name YourExistingPackage)
      (depends
      ; ... existing dependenices ...
      (cmdliner (>= 1.1.1+dune))))

    Then run:

    Copy
    dune build *.opam # if this fails, run: dune build
  3. Edit your <package>.opam file and add:

    Copy
    depends: [
      # ... existing dependencies ...
      "cmdliner" {>= "1.1.1+dune"}
    ]

    Then run:

    Copy
    opam install . --deps-only

FINALLY, add the cmdliner library to any desired (library)and/or (executable) targets in your **/dune files:

Copy
(library
  (name YourLibrary)
  ; ... existing library options ...
  (libraries
    ; ... existing libraries ...
    cmdliner))

(executable
  (name YourExecutable)
  ; ... existing executable options ...
  (libraries
    ; ... existing libraries ...
    cmdliner))
typeblock`` = ``[
| ``` S ``of string
| ``` P ``of string
| ``` Pre ``of string
| ``` I ``of string * string
| ``` Noblank ``
| ``` Blocks ``of block list ]
valescape : ``string-> string

escape s escapes s from the doc language.

type title`` = string * int * string * string * string
typet`` =title*block list
typexref`` = ``[
| ``` Main ``
| ``` Cmd ``of string
| ``` Tool ``of string
| ``` Page ``of string * int ]

Standard section names

val s_name : string
val s_synopsis : string
val s_description : string
val s_commands : string
val s_arguments : string
val s_options : string
val s_common_options : string
val s_exit_status : string
val s_environment : string
val s_files : string
val s_bugs : string
val s_examples : string
val s_authors : string
val s_see_also : string
val s_none : string

Section maps

Used for handling the merging of metadata doc strings.

type smap
valsmap_of_blocks :blocklist``-> smap
valsmap_to_blocks :smap -> block list
valsmap_has_section :smap ->``sec:string-> bool
valsmap_append_block :smap ->``sec:string-> block -> smap

smap_append_block smap sec b appends b at the end of section sec creating it at the right place if needed.

Content boilerplate

vals_exit_status_intro :block
vals_environment_intro :block

Output

typeformat`` = ``[
| ``` Auto ``
| ``` Pager ``
| ``` Plain ``
| ``` Groff `` ]
val print : ``?errs:Stdlib.Format.formatter ->``?subst:``(``string->``string option``)``-> format -> Stdlib.Format.formatter -> t -> unit

\Printers and escapes used by Cmdliner module

val subst_vars : ``errs:Stdlib.Format.formatter ->``subst:``(``string->``string option``)``-> Stdlib.Buffer.t ->``string-> string

subst b ~subst s, using b, substitutes in s variables of the form "$(doc)" by their subst definition. This leaves escapes and markup directives $(markup,…) intact.

  • raises Invalid_argument

    in case of illegal syntax.

val doc_to_plain : ``errs:Stdlib.Format.formatter ->``subst:``(``string->``string option``)``-> Stdlib.Buffer.t ->``string-> string

doc_to_plain b ~subst s using b, subsitutes in s variables by their subst definition and renders cmdliner directives to plain text.

  • raises Invalid_argument

    in case of illegal syntax.