.. index:: pack_protocol .. _pack_protocol/0: .. rst-class:: right **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. | **Availability:** | ``logtalk_load(packs(loader))`` | **Author:** Paulo Moura | **Version:** 0:17:0 | **Date:** 2024-02-29 | **Compilation flags:** | ``static`` | **Dependencies:** | (none) | **Remarks:** | (none) | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: name/1 .. _pack_protocol/0::name/1: ``name/1`` ^^^^^^^^^^ Pack name. | **Compilation flags:** | ``static`` | **Template:** | ``name(Name)`` | **Mode and number of proofs:** | ``name(?atom)`` - ``zero_or_one`` ------------ .. index:: description/1 .. _pack_protocol/0::description/1: ``description/1`` ^^^^^^^^^^^^^^^^^ Pack one line description. | **Compilation flags:** | ``static`` | **Template:** | ``description(Description)`` | **Mode and number of proofs:** | ``description(?atom)`` - ``zero_or_one`` ------------ .. index:: license/1 .. _pack_protocol/0::license/1: ``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`` ------------ .. index:: home/1 .. _pack_protocol/0::home/1: ``home/1`` ^^^^^^^^^^ Pack home HTTPS or file URL. | **Compilation flags:** | ``static`` | **Template:** | ``home(Home)`` | **Mode and number of proofs:** | ``home(?atom)`` - ``zero_or_one`` ------------ .. index:: version/6 .. _pack_protocol/0::version/6: ``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:Patch``. 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, download HTTPS URL for the pack archive, or download git archive 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: Pack dependencies list. Each dependency is a ``Dependency Operator Version`` term. ``Operator`` is a term comparison operator. Valid ``Dependency`` values are ``Registry::Pack``, ``os(Name,Machine)``, ``logtalk``, and a backend identifier atom. - 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. ------------ .. index:: note/3 .. _pack_protocol/0::note/3: ``note/3`` ^^^^^^^^^^ Table of notes per action and version. | **Compilation flags:** | ``static`` | **Template:** | ``note(Action,Version,Note)`` | **Mode and number of proofs:** | ``note(?atom,?term,-atom)`` - ``zero_or_more`` | **Remarks:** - Action: Possible values are ``install``, ``update``, and ``uninstall``. When unbound, the note apply to all actions. - Version: Version acted on (i.e. version being installed, updated to, or uninstalled). When unbound, the note apply to all versions. - Note: Note to print when performing an action on a pack version. ------------ Protected predicates -------------------- (none) Private predicates ------------------ (none) Operators --------- (none)