Client library for opam 2.1

Pins a package to the given version, and writes to disk. Returns the updated state. The main difference with source_pin is that a definition overlay is not created. Therefore, the package must exist already.

exception Aborted
exception Nothing_to_do
val source_pin : OpamStateTypes.rw OpamStateTypes.switch_state -> OpamTypes.name -> ?version:OpamTypes.version -> ?edit:bool -> ?opam:OpamFile.OPAM.t -> ?quiet:bool -> ?force:bool -> ?ignore_extra_pins:bool -> ?subpath:string -> ?locked:bool -> OpamTypes.url option -> OpamStateTypes.rw OpamStateTypes.switch_state

Sets the package as pinned to the given target. A package definition is looked for in the package source and current metadata (in this order), unless specified using ~opam.

If edit, or if no package definition is found, this opens an editor (with a template if no definition is available).

If force, don't abort even if the source can't be fetched from target

May raise Aborted or Nothing_to_do.

Interactively handles the pin-depends in an opam file

val fetch_all_pins : 'a OpamStateTypes.switch_state -> ?working_dir:bool -> (OpamTypes.name * OpamTypes.url * string option) list -> (OpamTypes.url * string option) list

Fetch in parallel jobs a list of pins name, url, subpath, and return the successful ones. Ask for confirmation to continue if a fetching fails.

Let the user edit a pinned package's opam file. If given, the version is put into the template in advance. Writes and returns the updated switch state.

Pure function that reverts a single package pinning

val list : 'a OpamStateTypes.switch_state -> short:bool -> unit

List the pinned packages to the user.

val scan_sep : char

Scan pinning separator, used for printing and parsing by scan and parse_pins.

val scan : normalise:bool -> recurse:bool -> ?subpath:string -> OpamTypes.url -> unit

Scan for available packages to pin, and display it on stdout. If normalise is true, displays it's normalised format `name.versionscan_sepurlscan_sepsubpath`.

val looks_like_normalised : string list -> bool

Detect if a string is a normalised format of scan.

val parse_pins : string list -> (OpamTypes.name * OpamTypes.version option * OpamTypes.url * string option) list

Parse the normalised form of scan, and returns pinning informations.

val read_opam_file_for_pinning : ?quiet:bool -> OpamTypes.name -> OpamFile.OPAM.t OpamFile.t -> OpamTypes.url -> OpamFile.OPAM.t option

Lints the given opam file, prints warnings or errors accordingly (unless quiet), upgrades it to current format, adds references to files below the 'files/' subdir (unless the file is directly below the specified, local url), and returns it

The default version for pinning a package: depends on the state, what is installed and available, and defaults to ~dev.