.. 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.

| **Author:** Paulo Moura
| **Version:** 0:14:0
| **Date:** 2021-10-30

| **Compilation flags:**
|    ``static``


| **Dependencies:**
|   (none)


| **Remarks:**
|    (none)

| **Inherited public predicates:**
|    (none)

.. contents::
   :local:
   :backlinks: top

Public predicates
-----------------

.. raw:: html

   <div id="name/1"> </div>

.. 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``


------------

.. raw:: html

   <div id="description/1"> </div>

.. 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``


------------

.. raw:: html

   <div id="license/1"> </div>

.. 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``


------------

.. raw:: html

   <div id="home/1"> </div>

.. 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``


------------

.. raw:: html

   <div id="version/6"> </div>

.. 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: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)

