object

# `packs`

Pack handling predicates.

Author: Paulo Moura
Version: 0:48:0
Date: 2022-02-26
Compilation flags:
`static, context_switching_calls`
Imports:
`public` packs_common
`public` options
Uses:
list
logtalk
os
registries
type
user
Remarks:
(none)
Inherited public predicates:
check_option/1 check_options/1 default_option/1 default_options/1 directory/1 directory/2 help/0 logtalk_packs/0 logtalk_packs/1 option/2 option/3 pin/0 pin/1 pinned/1 readme/1 readme/2 reset/0 setup/0 unpin/0 unpin/1 valid_option/1 valid_options/1 verify_commands_availability/0

- Public predicates

  - `available/1`

  - `available/0`

  - `installed/4`

  - `installed/3`

  - `installed/0`

  - `outdated/4`

  - `outdated/1`

  - `outdated/0`

  - `orphaned/2`

  - `orphaned/0`

  - `describe/2`

  - `describe/1`

  - `search/1`

  - `install/4`

  - `install/3`

  - `install/2`

  - `install/1`

  - `update/3`

  - `update/2`

  - `update/1`

  - `update/0`

  - `uninstall/2`

  - `uninstall/1`

  - `uninstall/0`

  - `clean/2`

  - `clean/1`

  - `clean/0`

  - `save/2`

  - `save/1`

  - `restore/2`

  - `restore/1`

  - `dependents/3`

  - `dependents/2`

  - `dependents/1`

  - `lint/2`

  - `lint/1`

  - `lint/0`

- Protected predicates

- Private predicates

- Operators

## Public predicates

### `available/1`

Lists all the packs that are available for installation from the given registry.

Compilation flags:
`static`
Template:
`available(Registry)`
Mode and number of proofs:
`available(+atom)` - `one`

### `available/0`

Lists all the packs that are available for installation from all defined registries.

Compilation flags:
`static`
Mode and number of proofs:
`available` - `one`

### `installed/4`

Enumerates by backtracking all installed packs.

Compilation flags:
`static`
Template:
`installed(Registry,Pack,Version,Pinned)`
Mode and number of proofs:
`installed(?atom,?atom,?compound,?boolean)` - `zero_or_more`

### `installed/3`

Enumerates by backtracking all installed packs.

Compilation flags:
`static`
Template:
`installed(Registry,Pack,Version)`
Mode and number of proofs:
`installed(?atom,?atom,?compound)` - `zero_or_more`

### `installed/0`

Lists all the packs that are installed.

Compilation flags:
`static`
Mode and number of proofs:
`installed` - `one`

### `outdated/4`

Enumerates by backtracking all installed but outdated packs (together with the current version installed and the latest version available).

Compilation flags:
`static`
Template:
`outdated(Registry,Pack,Version,LatestVersion)`
Mode and number of proofs:
`outdated(?atom,?atom,?compound,?compound)` - `zero_or_more`

### `outdated/1`

Lists all the packs from the given registry that are installed but outdated.

Compilation flags:
`static`
Mode and number of proofs:
`outdated(+atom)` - `one`

### `outdated/0`

Lists all the packs that are installed but outdated.

Compilation flags:
`static`
Mode and number of proofs:
`outdated` - `one`

### `orphaned/2`

Lists all the packs that are installed but whose registry is no longer defined.

Compilation flags:
`static`
Template:
`orphaned(Registry,Pack)`
Mode and number of proofs:
`orphaned(?atom,?atom)` - `zero_or_more`

### `orphaned/0`

Lists all the packs that are installed but whose registry is no longer defined.

Compilation flags:
`static`
Mode and number of proofs:
`orphaned` - `one`

### `describe/2`

Describes a registered pack, including installed version if applicable.

Compilation flags:
`static`
Template:
`describe(Registry,Pack)`
Mode and number of proofs:
`describe(+atom,+atom)` - `zero_or_one`

### `describe/1`

Describes a registered pack, including installed version if applicable.

Compilation flags:
`static`
Template:
`describe(Pack)`
Mode and number of proofs:
`describe(+atom)` - `zero_or_one`

### `search/1`

Searches packs whose name or description includes the search term (case sensitive).

Compilation flags:
`static`
Template:
`search(Term)`
Mode and number of proofs:
`search(+atom)` - `one`

### `install/4`

Installs a new pack using the specified options. Fails if the pack is unknown or already installed but not using a `force(true)` option. Fails also if the pack version is unknown.

Compilation flags:
`static`
Template:
`install(Registry,Pack,Version,Options)`
Mode and number of proofs:
`install(+atom,+atom,++compound,++list(compound))` - `zero_or_one`
Remarks:

> - `force(Boolean)` option: Force re-installation if the pack is already installed. Default is `false`.

> - `clean(Boolean)` option: Clean pack archive after installation. Default is `false`.

> - `verbose(Boolean)` option: Verbose installing steps. Default is `false`.

> - `checksum(Boolean)` option: Verify pack archive checksum. Default is `true`.

> - `checksig(Boolean)` option: Verify pack archive signature. Default is `false`.

### `install/3`

Installs the specified version of a pack from the given registry using default options. Fails if the pack is already installed or unknown. Fails also if the pack version is unknown.

Compilation flags:
`static`
Template:
`install(Registry,Pack,Version)`
Mode and number of proofs:
`install(+atom,+atom,?compound)` - `zero_or_one`

### `install/2`

Installs the latest version of a pack from the given registry using default options. Fails if the pack is already installed or unknown.

Compilation flags:
`static`
Template:
`install(Registry,Pack)`
Mode and number of proofs:
`install(+atom,+atom)` - `zero_or_one`

### `install/1`

Installs a pack (if its name is unique among all registries) using default options. Fails if the pack is already installed or unknown. Fails also if the pack is available from multiple registries.

Compilation flags:
`static`
Template:
`install(Pack)`
Mode and number of proofs:
`install(+atom)` - `zero_or_one`

### `update/3`

Updates an outdated pack to the specified version using the specified options. Fails if the pack or the pack version is unknown or if the pack is not installed. Fails also if the pack is pinned and not using a `force(true)` option.

Compilation flags:
`static`
Template:
`update(Pack,Version,Options)`
Mode and number of proofs:
`update(+atom,++callable,++list(callable))` - `zero_or_one`
Remarks:

> - `force(Boolean)` option: Force update if the pack is pinned. Default is `false`.

> - `clean(Boolean)` option: Clean pack archive after updating. Default is `false`.

> - `verbose(Boolean)` option: Verbose updating steps. Default is `false`.

> - `checksum(Boolean)` option: Verify pack archive checksum. Default is `true`.

> - `checksig(Boolean)` option: Verify pack archive signature. Default is `false`.

### `update/2`

Updates an outdated pack to its latest version using the specified options. Fails if the pack is unknown or not installed. Fails also if the pack is pinned and not using a `force(true)` option.

Compilation flags:
`static`
Template:
`update(Pack,Options)`
Mode and number of proofs:
`update(+atom,++list(callable))` - `zero_or_one`
Remarks:

> - `force(Boolean)` option: Force update if the pack is pinned. Default is `false`.

> - `clean(Boolean)` option: Clean pack archive after updating. Default is `false`.

> - `verbose(Boolean)` option: Verbose updating steps. Default is `false`.

> - `checksum(Boolean)` option: Verify pack archive checksum. Default is `true`.

> - `checksig(Boolean)` option: Verify pack archive signature. Default is `false`.

### `update/1`

Updates an outdated pack to its latest version using default options. Fails if the pack is pinned, not installed, or unknown.

Compilation flags:
`static`
Template:
`update(Pack)`
Mode and number of proofs:
`update(+atom)` - `zero_or_one`

### `update/0`

Updades all outdated packs (that are not pinned) using default options.

Compilation flags:
`static`
Mode and number of proofs:
`update` - `zero_or_one`

### `uninstall/2`

Uninstalls a pack using the specified options. Fails if the pack is unknown or not installed. Fails also if the pack is pinned or have dependents and not using a `force(true)` option.

Compilation flags:
`static`
Template:
`uninstall(Pack,Options)`
Mode and number of proofs:
`uninstall(+atom,++list(compound))` - `zero_or_one`
Remarks:

> - `force(Boolean)` option: Force deletion if the pack is pinned. Default is `false`.

> - `clean(Boolean)` option: Clean pack archive after deleting. Default is `false`.

> - `verbose(Boolean)` option: Verbose uninstalling steps. Default is `false`.

### `uninstall/1`

Uninstalls a pack using default options. Fails if the pack is pinned, have dependents, not installed, or unknown.

Compilation flags:
`static`
Template:
`uninstall(Pack)`
Mode and number of proofs:
`uninstall(+atom)` - `zero_or_one`

### `uninstall/0`

Uninstalls all packs using the `force(true)` option.

Compilation flags:
`static`
Mode and number of proofs:
`uninstall` - `zero_or_one`

### `clean/2`

Cleans all pack archives. Fails if the the pack is unknown.

Compilation flags:
`static`
Template:
`clean(Registry,Pack)`
Mode and number of proofs:
`clean(+atom,+atom)` - `zero_or_one`

### `clean/1`

Cleans all pack archives. Fails if the pack is not unknown.

Compilation flags:
`static`
Template:
`clean(Pack)`
Mode and number of proofs:
`clean(+atom)` - `zero_or_one`

### `clean/0`

Cleans all archives for all packs.

Compilation flags:
`static`
Mode and number of proofs:
`clean` - `one`

### `save/2`

Saves a list of all installed packs and registries plus pinning status to a file. Registries without installed packs are saved when using the option `save(all)` and skipped when using the option `save(installed)` (default).

Compilation flags:
`static`
Template:
`save(File,Options)`

### `save/1`

Saves a list of all installed packs and their registries plus pinning status to a file. Registries without installed packs are not saved.

Compilation flags:
`static`
Template:
`save(File)`
Mode and number of proofs:
`save(+atom)` - `one`
`save(+atom)` - `one`

### `restore/2`

Restores a list of registries and packs plus their pinning status from a file using the given options. Fails if restoring is not possible.

Compilation flags:
`static`
Template:
`restore(File,Options)`
Mode and number of proofs:
`restore(+atom,++list(compound))` - `zero_or_one`
Remarks:

> - `force(Boolean)` option: Force restoring if a registry is already defined or a pack is already installed. Default is `false`.

> - `clean(Boolean)` option: Clean registry and pack archives after restoring. Default is `false`.

> - `verbose(Boolean)` option: Verbose restoring steps. Default is `false`.

> - `checksum(Boolean)` option: Verify pack archive checksums. Default is `true`.

> - `checksig(Boolean)` option: Verify pack archive signatures. Default is `false`.

### `restore/1`

Restores a list of registries and packs plus their pinning status from a file using the `force(true)` option. Fails if restoring is not possible.

Compilation flags:
`static`
Template:
`restore(File)`
Mode and number of proofs:
`restore(+atom)` - `zero_or_one`

### `dependents/3`

Returns a list of all installed packs that depend on the given pack from the given registry. Fails if the pack is unknown.

Compilation flags:
`static`
Template:
`dependents(Registry,Pack,Dependents)`
Mode and number of proofs:
`dependents(+atom,+atom,-list(atom))` - `zero_or_one`

### `dependents/2`

Prints a list of all installed packs that depend on the given pack from the given registry. Fails if the pack is unknown.

Compilation flags:
`static`
Template:
`dependents(Registry,Pack)`
Mode and number of proofs:
`dependents(+atom,+atom)` - `zero_or_one`

### `dependents/1`

Prints a list of all installed packs that depend on the given pack if unique from all defined registries. Fails if the pack is unknown or available from multiple registries.

Compilation flags:
`static`
Template:
`dependents(Pack)`
Mode and number of proofs:
`dependents(+atom)` - `zero_or_one`

### `lint/2`

Checks the pack specification. Fails if the pack is unknown or if linting detects errors.

Compilation flags:
`static`
Template:
`lint(Registry,Pack)`
Mode and number of proofs:
`lint(+atom,+atom)` - `zero_or_one`

### `lint/1`

Checks the pack specification. Fails if the pack is unknown, or available from multiple registries, or if linting detects errors.

Compilation flags:
`static`
Template:
`lint(Pack)`
Mode and number of proofs:
`lint(+atom)` - `zero_or_one`

### `lint/0`

Checks all pack specifications.

Compilation flags:
`static`
Mode and number of proofs:
`lint` - `one`

## Protected predicates

(no local declarations; see entity ancestors if any)

## Private predicates

(no local declarations; see entity ancestors if any)

## Operators

(none)