package sihl-core

  1. Overview
  2. Docs

A module to register and run CLI commands.

A CLI command is the entry t a Sihl app. Services contribute their own set of commands, making every Sihl app and the available commands per Sihl app dynamic and dependent on the set of active services.

type fn = string list -> unit Lwt.t

A function that takes a list of strings as argument and does some side effect.

type t = {
  1. name : string;
  2. help : string option;
  3. description : string;
  4. fn : fn;
}

A CLI command has a unique name, an optional help text that shows the usage, a description that gives background information and the actual CLI function.

exception Exception of string
val make : name:string -> ?help:string -> description:string -> fn -> t

Running commands

val run : t list -> string list option -> unit Lwt.t

Call run commands args in the main Sihl app executable to pass command line arguments to all registered commands. This is the main entry point to a Sihl app. An optional list of arguments args can be passed, if None is passed, it reads the arguments from Sys.argv.

Utilities

val sexp_of_t : t -> Sexplib0.Sexp.t

sexp_of_t t converts the command t to an s-expression

val pp : Stdlib.Format.formatter -> t -> unit

pp formats the command t as an s-expression