package opam-core

  1. Overview
  2. Docs

Querying

val tty_out : bool

true if stdout is bound to a terminal

val tty_in : bool

true if stdin is bound to a terminal

val terminal_columns : unit -> int

Queried lazily, but may change on SIGWINCH

val home : unit -> string

The user's home directory. Queried lazily

val etc : unit -> string

The /etc directory

val system : unit -> string

The system directory (Windows only)

type os =
  1. | Darwin
  2. | Linux
  3. | FreeBSD
  4. | OpenBSD
  5. | NetBSD
  6. | DragonFly
  7. | Cygwin
  8. | Win32
  9. | Unix
  10. | Other of string
val os : unit -> os

Queried lazily

val uname : string -> string option

The output of the command "uname", with the given argument. Memoised.

val executable_name : string -> string

Append .exe (only if missing) to executable filenames on Windows

type powershell_host =
  1. | Powershell_pwsh
  2. | Powershell

The different families of shells we know about

type shell =
  1. | SH_sh
  2. | SH_bash
  3. | SH_zsh
  4. | SH_csh
  5. | SH_fish
  6. | SH_pwsh of powershell_host
  7. | SH_cmd
val all_shells : shell list

List of all supported shells

val guess_shell_compat : unit -> shell

Guess the shell compat-mode

val guess_dot_profile : shell -> string option

Guess the location of .profile. Returns None if the shell doesn't support the concept of a .profile file.

val path_sep : char

The separator character used in the PATH variable (varies depending on OS)

val split_path_variable : ?clean:bool -> string -> string list

Splits a PATH-like variable separated with path_sep. More involved than it seems, because there may be quoting on Windows. By default, it returns the path cleaned (remove trailing, leading, contiguous delimiters). Optional argument clean permits to keep those empty strings.

val get_windows_executable_variant : cygbin:string option -> string -> [ `Native | `Cygwin | `Tainted of [ `Msys2 | `Cygwin ] | `Msys2 ]

For native Windows builds, returns `Cygwin if the command is a Cygwin- compiled executable, `Msys2 if the command is a MSYS2-compiled executable, and `Tainted of [ `Msys2 | `Cygwin ] if the command links to a library which is itself Cygwin- or MSYS2-compiled, or `Native otherwise.

Note that this returns `Native on a Cygwin-build of opam!

Both cygcheck and an unqualified command will be resolved if necessary using the current PATH.

val is_cygwin_cygcheck : cygbin:string option -> bool

Determines if cygcheck in given cygwin binary directory comes from a Cygwin or MSYS2 installation. Determined by analysing the cygpath command found with it.

val get_cygwin_variant : cygbin:string option -> string -> [ `Native | `Cygwin | `CygLinked ]

For native Windows builds, returns `Cygwin if the command is a Cygwin- or Msys2- compiled executable, and `CygLinked if the command links to a library which is itself Cygwin/Msys2-compiled, or `Native otherwise.

Note that this returns `Native on a Cygwin-build of opam!

Both cygcheck and an unqualified command will be resolved using the current PATH.

val is_cygwin_variant : cygbin:string option -> string -> bool

Returns true if get_cygwin_variant is `Cygwin

Exit handling

val at_exit : (unit -> unit) -> unit

Like Stdlib.at_exit but with the possibility to call manually (eg. before exec())

val exec_at_exit : unit -> unit

Calls the functions registered in at_exit. Unneeded if exiting normally

exception Exit of int

Indicates intention to exit the program with given exit code

exception Exec of string * string array * string array

Indicates intention to exec() the given command (parameters as per Unix.execvpe), after proper finalisations. It's the responsibility of the main function to catch this, call exec_at_exit, and Unix.execvpe.

Raises Exit i

type exit_reason = [
  1. | `Success
  2. | `False
  3. | `Bad_arguments
  4. | `Not_found
  5. | `Aborted
  6. | `Locked
  7. | `No_solution
  8. | `File_error
  9. | `Package_operation_error
  10. | `Sync_error
  11. | `Configuration_error
  12. | `Solver_failure
  13. | `Internal_error
  14. | `User_interrupt
]
val exit_codes : (exit_reason * int) list
val get_exit_code : exit_reason -> int
val exit_because : exit_reason -> 'a

Raises Exit, with the code associated to the exit reason

OCaml

Innovation. Community. Security.