Did you know ... Search Documentation:
prolog_pack.pl -- A package manager for Prolog
PublicShow source

The library(prolog_pack) provides the SWI-Prolog package manager. This library lets you inspect installed packages, install packages, remove packages, etc. It is complemented by the built-in attach_packs/0 that makes installed packages available as libaries.

See also
- Installed packages can be inspected using ?- doc_browser.
To be done
- Version logic
- Find and resolve conflicts
- Upgrade git packages
- Validate git packages
- Test packages: run tests from directory `test'.
Source pack_list_installed is det
List currently installed packages. Unlike pack_list/1, only locally installed packages are displayed and no connection is made to the internet.
See also
- Use pack_list/1 to find packages.
Source pack_info(+Pack)
Print more detailed information about Pack.
Source pack_search(+Query) is det
Source pack_list(+Query) is det
Query package server and installed packages and display results. Query is matches case-insensitively against the name and title of known and installed packages. For each matching package, a single line is displayed that provides:
  • Installation status
    • p: package, not installed
    • i: installed package; up-to-date with public version
    • U: installed package; can be upgraded
    • A: installed package; newer than publically available
    • l: installed package; not on server
  • Name@Version
  • Name@Version(ServerVersion)
  • Title

Hint: ?- pack_list(''). lists all packages.

The predicates pack_list/1 and pack_search/1 are synonyms. Both contact the package server at http://www.swi-prolog.org to find available packages.

See also
- pack_list_installed/0 to list installed packages without contacting the server.
Source pack_install(+Spec:atom) is det
Install a package. Spec is one of
  • Archive file name
  • HTTP URL of an archive file name. This URL may contain a star (*) for the version. In this case pack_install asks for the deirectory content and selects the latest version.
  • GIT URL (not well supported yet)
  • A local directory name given as file:// URL.
  • A package name. This queries the package repository at http://www.swi-prolog.org

After resolving the type of package, pack_install/2 is used to do the actual installation.

Source pack_install(+Name, +Options) is det
Install package Name. Processes the options below. Default options as would be used by pack_install/1 are used to complete the provided Options.
Source for downloading the package
Directory into which to install the package
Use default answer without asking the user if there is a default action.
If true (default false), suppress informational progress messages.
If true (default false), upgrade package if it is already installed.
If true (default false unless URL ends with =.git=), assume the URL is a GIT repository.

Non-interactive installation can be established using the option interactive(false). It is adviced to install from a particular trusted URL instead of the plain pack name for unattented operation.

Source pack_url_file(+URL, -File) is det
True if File is a unique id for the referenced pack and version. Normally, that is simply the base name, but GitHub archives destroy this picture. Needed by the pack manager.
Source pack_rebuild(+Pack) is det
Rebuilt possible foreign components of Pack.
Source pack_rebuild is det
Rebuild foreign components of all packages.
 environment(-Name, -Value) is nondet[multifile]
Hook to define the environment for building packs. This Multifile hook extends the process environment for building foreign extensions. A value provided by this hook overrules defaults provided by def_environment/2. In addition to changing the environment, this may be used to pass additional values to the environment, as in:
prolog_pack:environment('USER', User) :-
    getenv('USER', User).
Name- is an atom denoting a valid variable name
Value- is either an atom or number representing the value of the variable.
Source pack_upgrade(+Pack) is semidet
Try to upgrade the package Pack.
To be done
- Update dependencies when updating a pack from git?
Source pack_remove(+Name) is det
Remove the indicated package.
Source pack_property(?Pack, ?Property) is nondet
True when Property is a property of Pack. This interface is intended for programs that wish to interact with the package manager. Defined properties are:
Directory into which the package is installed
Installed version
Full title of the package
Registered author
Official download URL
Package README file (if present)
Package TODO file (if present)