type t =
| Seq of t list
| Cmd of spec
| Echo of string list * pathname
| Nop
val atomize : string list -> spec
val atomize_paths : string list -> spec
val run_spec_and_read : ?quiet:bool -> spec -> string
val execute : ?quiet:bool -> ?pretend:bool -> t -> unit
val execute_many :
?quiet:bool ->
?pretend:bool ->
t list ->
(bool list * exn) option
val setup_virtual_command_solver : string -> (unit -> spec) -> unit
val search_in_path : string -> string
val to_string : t -> string
val string_of_command_spec : spec -> string