protocol

# `pack_protocol`

Pack specification protocol. Objects implementing this protocol should be named after the pack with a `_pack` suffix and saved in a file with the same name as the object.

Author: Paulo Moura
Version: 0:14:0
Date: 2021-10-30
Compilation flags:
`static`
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

- Public predicates

  - `name/1`

  - `description/1`

  - `license/1`

  - `home/1`

  - `version/6`

- Protected predicates

- Private predicates

- Operators

## Public predicates

### `name/1`

Pack name.

Compilation flags:
`static`
Template:
`name(Name)`
Mode and number of proofs:
`name(?atom)` - `zero_or_one`

### `description/1`

Pack one line description.

Compilation flags:
`static`
Template:
`description(Description)`
Mode and number of proofs:
`description(?atom)` - `zero_or_one`

### `license/1`

Pack license. Specified using the identifier from the SPDX License List (https://spdx.org/licenses/) when possible.

Compilation flags:
`static`
Template:
`license(License)`
Mode and number of proofs:
`license(?atom)` - `zero_or_one`

### `home/1`

Pack home HTTPS or file URL.

Compilation flags:
`static`
Template:
`home(Home)`
Mode and number of proofs:
`home(?atom)` - `zero_or_one`

### `version/6`

Table of available versions.

Compilation flags:
`static`
Template:
`version(Version,Status,URL,Checksum,Dependencies,Portability)`
Mode and number of proofs:
`version(?compound,?atom,-atom,-pair(atom,atom),-list(pair(atom,callable)),?atom)` - `zero_or_more`
`version(?compound,?atom,-atom,-pair(atom,atom),-list(pair(atom,callable)),-list(atom))` - `zero_or_more`
Remarks:

> - Version: This argument uses the same format as entity versions: `Major:Minor:Pathch`. Semantic versioning should be used.

> - Status: Version development status. E.g `stable`, `rc`, `beta`, `alpha`, or `deprecated`.

> - URL: File URL for a local directory, file URL for a local archive, or download HTTPS URL for the pack archive.

> - Checksum: A pair where the key is the hash algorithm and the value is the checksum. Currently, the hash algorithm must be `sha256`. For `file://` URLs of local directories, use `none` instead of a pair.

> - Dependencies: A list of the pack dependencies. Each dependency is a compound term `Registry::Pack Operator Version` where `Operator` is a term comparison operator. The atom `logtalk` or a backend identifier atom can also be used in place of `Registry::Pack`.

> - Portability: Either the atom `all` or a list of the supported backend Prolog compilers (using the identifier atoms used by the `prolog_dialect` flag).

> - Clause order: Versions must be listed ordered from newest to oldest.

## Protected predicates

(none)

## Private predicates

(none)

## Operators

(none)