package ocamlbuild

  1. Overview
  2. Docs

Module type Signatures.COMMAND

Provides an abstract type for easily building complex shell commands without making quotation mistakes.

type tags
type pathname
type t =
  1. | Seq of t list
    (*

    A sequence of commands (like the `;' in shell)

    *)
  2. | Cmd of spec
    (*

    A command is made of command specifications (spec)

    *)
  3. | Echo of string list * pathname
    (*

    Write the given strings as is (newlines are not added) to the given file

    *)
  4. | Nop
    (*

    The command that does nothing

    *)

The type t provides some basic combinators and command primitives. Other commands can be made of command specifications (spec).

and spec =
  1. | N
    (*

    No operation.

    *)
  2. | S of spec list
    (*

    A sequence. This gets flattened in the last stages

    *)
  3. | A of string
    (*

    An atom.

    *)
  4. | P of pathname
    (*

    A pathname.

    *)
  5. | Px of pathname
    (*

    A pathname, that will also be given to the call_with_target hook.

    *)
  6. | Sh of string
    (*

    A bit of raw shell code, that will not be escaped.

    *)
  7. | T of tags
    (*

    A set of tags, that describe properties and some semantics information about the command, afterward these tags will be replaced by command specs (flags for instance).

    *)
  8. | V of string
    (*

    A virtual command, that will be resolved at execution using resolve_virtuals

    *)
  9. | Quote of spec
    (*

    Used for commands or part of commands, meant to be passed to Sys.command at some point.

    *)

The type for command specifications. That is pieces of command.

val atomize : string list -> spec

Will convert a string list to a list of atoms by adding A constructors.

val atomize_paths : string list -> spec

Will convert a string list to a list of paths by adding P constructors.

val execute : ?quiet:bool -> ?pretend:bool -> t -> unit

Run the command.

val execute_many : ?quiet:bool -> ?pretend:bool -> t list -> (bool list * exn) option

Run the commands in the given list, if possible in parallel. See the module Ocamlbuild_executor.

val setup_virtual_command_solver : string -> (unit -> spec) -> unit

setup_virtual_command_solver virtual_command solver the given solver can raise Not_found if it fails to find a valid command for this virtual command.

val search_in_path : string -> string

Search the given command in the command path and return its absolute pathname.

val reduce : spec -> spec

Simplify a command by flattening the sequences and resolving the tags into command-line options.

val print : Format.formatter -> t -> unit

Print a command (the format is not suitable to running the command).

val to_string : t -> string

Convert a command to a string (same format as print).

val string_of_command_spec : spec -> string

Build a string representation of a command that can be passed to the system calls.

OCaml

Innovation. Community. Security.