.. index:: packs_common
.. _packs_common/0:

.. rst-class:: right

**category**

``packs_common``
================

Common predicates for the packs tool objects.

| **Author:** Paulo Moura
| **Version:** 0:23:0
| **Date:** 2022-02-26

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


| **Uses:**
|    :ref:`logtalk <logtalk/0>`
|    :ref:`os <os/0>`
|    :ref:`user <user/0>`

| **Remarks:**
|    (none)

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

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

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

.. raw:: html

   <div id="setup/0"> </div>

.. index:: setup/0
.. _packs_common/0::setup/0:

``setup/0``
^^^^^^^^^^^

Ensures that registries and packs directory structure exists. Preserves any defined registries and installed packs.

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

| **Mode and number of proofs:**
|    ``setup`` - ``one``


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

.. raw:: html

   <div id="reset/0"> </div>

.. index:: reset/0
.. _packs_common/0::reset/0:

``reset/0``
^^^^^^^^^^^

Resets registries and packs directory structure. Deletes any defined registries and installed packs.

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

| **Mode and number of proofs:**
|    ``reset`` - ``one``


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

.. raw:: html

   <div id="verify_commands_availability/0"> </div>

.. index:: verify_commands_availability/0
.. _packs_common/0::verify_commands_availability/0:

``verify_commands_availability/0``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Verifies required shell commands availability. Fails printing an error message if a command is missing.

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

| **Mode and number of proofs:**
|    ``verify_commands_availability`` - ``zero_or_one``


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

.. raw:: html

   <div id="help/0"> </div>

.. index:: help/0
.. _packs_common/0::help/0:

``help/0``
^^^^^^^^^^

Provides help about the main predicates.

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

| **Mode and number of proofs:**
|    ``help`` - ``one``


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

.. raw:: html

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

.. index:: pin/1
.. _packs_common/0::pin/1:

``pin/1``
^^^^^^^^^

Pins a resource (pack or registry) preventing it from being updated, uninstalled, or deleted. Fails if the resource is not found.

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

| **Template:**
|    ``pin(Resource)``
| **Mode and number of proofs:**
|    ``pin(+atom)`` - ``zero_or_one``


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

.. raw:: html

   <div id="pin/0"> </div>

.. index:: pin/0
.. _packs_common/0::pin/0:

``pin/0``
^^^^^^^^^

Pins all resource (packs or registries) preventing them from being updated, uninstalled, or deleted. Note that resources added after calling this predicate will not be pinned.

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

| **Mode and number of proofs:**
|    ``pin`` - ``one``


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

.. raw:: html

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

.. index:: unpin/1
.. _packs_common/0::unpin/1:

``unpin/1``
^^^^^^^^^^^

Unpins a resource (pack or registry), allowing it to be updated, uninstalled, or deleted. Fails if the resource is not found.

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

| **Template:**
|    ``unpin(Resource)``
| **Mode and number of proofs:**
|    ``unpin(+atom)`` - ``zero_or_one``


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

.. raw:: html

   <div id="unpin/0"> </div>

.. index:: unpin/0
.. _packs_common/0::unpin/0:

``unpin/0``
^^^^^^^^^^^

Unpins all resources (packs or registries), allowing them to be updated, uninstalled, or deleted.

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

| **Mode and number of proofs:**
|    ``unpin`` - ``one``


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

.. raw:: html

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

.. index:: pinned/1
.. _packs_common/0::pinned/1:

``pinned/1``
^^^^^^^^^^^^

True iff the resource (pack or registry) is defined or installed and if it is pinned.

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

| **Template:**
|    ``pinned(Resource)``
| **Mode and number of proofs:**
|    ``pinned(+atom)`` - ``zero_or_one``


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

.. raw:: html

   <div id="directory/2"> </div>

.. index:: directory/2
.. _packs_common/0::directory/2:

``directory/2``
^^^^^^^^^^^^^^^

Enumerates by backtracking all packs or registries and respective installation or definition directories.

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

| **Template:**
|    ``directory(Resource,Directory)``
| **Mode and number of proofs:**
|    ``directory(?atom,?atom)`` - ``zero_or_more``


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

.. raw:: html

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

.. index:: directory/1
.. _packs_common/0::directory/1:

``directory/1``
^^^^^^^^^^^^^^^

Returns the directory where the registries or the packs are installed.

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

| **Template:**
|    ``directory(Directory)``
| **Mode and number of proofs:**
|    ``directory(?atom)`` - ``zero_or_one``


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

.. raw:: html

   <div id="readme/2"> </div>

.. index:: readme/2
.. _packs_common/0::readme/2:

``readme/2``
^^^^^^^^^^^^

Returns the path to the resource (pack or registry) readme file using the internal backend format. Fails if the resource is not defined or installed or if no readme file is found for it.

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

| **Template:**
|    ``readme(Resource,ReadMeFile)``
| **Mode and number of proofs:**
|    ``readme(+atom,-atom)`` - ``zero_or_one``


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

.. raw:: html

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

.. index:: readme/1
.. _packs_common/0::readme/1:

``readme/1``
^^^^^^^^^^^^

Prints the path to the resource (pack or registry) readme file using the native operating-system format. Fails if the resource is not defined or installed or if no readme file is found for it.

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

| **Template:**
|    ``readme(Resource)``
| **Mode and number of proofs:**
|    ``readme(+atom)`` - ``zero_or_one``


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

.. raw:: html

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

.. index:: logtalk_packs/1
.. _packs_common/0::logtalk_packs/1:

``logtalk_packs/1``
^^^^^^^^^^^^^^^^^^^

Returns the directory (using the internal backend format) where the registries, packs, and archives are installed.

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

| **Template:**
|    ``logtalk_packs(LogtalkPacks)``
| **Mode and number of proofs:**
|    ``logtalk_packs(-atom)`` - ``one``


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

.. raw:: html

   <div id="logtalk_packs/0"> </div>

.. index:: logtalk_packs/0
.. _packs_common/0::logtalk_packs/0:

``logtalk_packs/0``
^^^^^^^^^^^^^^^^^^^

Prints the directory (using the native operating-system format) where the registries, packs, and archives are installed.

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

| **Mode and number of proofs:**
|    ``logtalk_packs`` - ``one``


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

Protected predicates
--------------------

.. raw:: html

   <div id="readme_file_path/2"> </div>

.. index:: readme_file_path/2
.. _packs_common/0::readme_file_path/2:

``readme_file_path/2``
^^^^^^^^^^^^^^^^^^^^^^

Returns the absolute path for the given directory readme file if it exists.

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

| **Template:**
|    ``readme_file_path(Directory,ReadMeFile)``
| **Mode and number of proofs:**
|    ``readme_file_path(+atom,-atom)`` - ``zero_or_one``


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

.. raw:: html

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

.. index:: print_readme_file_path/1
.. _packs_common/0::print_readme_file_path/1:

``print_readme_file_path/1``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Prints the absolute path for the given directory readme file if it exists. Succeeds otherwise.

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

| **Template:**
|    ``print_readme_file_path(Directory)``
| **Mode and number of proofs:**
|    ``print_readme_file_path(+atom)`` - ``one``


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

.. raw:: html

   <div id="command/2"> </div>

.. index:: command/2
.. _packs_common/0::command/2:

``command/2``
^^^^^^^^^^^^^

Executes a shell command. Prints an error message and fails if the command fails.

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

| **Template:**
|    ``command(Command,FailureMessage)``
| **Mode and number of proofs:**
|    ``command(+atom,@nonvar)`` - ``zero_or_one``


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

.. raw:: html

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

.. index:: load_registry/1
.. _packs_common/0::load_registry/1:

``load_registry/1``
^^^^^^^^^^^^^^^^^^^

Loads all registry files from the given directory.

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

| **Template:**
|    ``load_registry(Directory)``
| **Mode and number of proofs:**
|    ``load_registry(+atom)`` - ``zero_or_one``


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

.. raw:: html

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

.. index:: tar_command/1
.. _packs_common/0::tar_command/1:

``tar_command/1``
^^^^^^^^^^^^^^^^^

Returns the name of the tar command to be used depending on the operating-system.

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

| **Template:**
|    ``tar_command(Command)``
| **Mode and number of proofs:**
|    ``tar_command(-atom)`` - ``one``


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

.. raw:: html

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

.. index:: supported_archive/1
.. _packs_common/0::supported_archive/1:

``supported_archive/1``
^^^^^^^^^^^^^^^^^^^^^^^

True iff the archive format is supported.

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

| **Template:**
|    ``supported_archive(Extension)``
| **Mode and number of proofs:**
|    ``supported_archive(+atom)`` - ``zero_or_one``


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

.. raw:: html

   <div id="decode_url_spaces/2"> </div>

.. index:: decode_url_spaces/2
.. _packs_common/0::decode_url_spaces/2:

``decode_url_spaces/2``
^^^^^^^^^^^^^^^^^^^^^^^

Decodes encoded spaces (%20) in URLs to spaces.

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

| **Template:**
|    ``decode_url_spaces(URL,Decoded)``
| **Mode and number of proofs:**
|    ``decode_url_spaces(+atom,-atom)`` - ``one``


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

Private predicates
------------------

(no local declarations; see entity ancestors if any)

Operators
---------

(none)

