.. _cli:
.. module:: exos.api

CLI
================================================

CLI access
------------------------------------------------

.. autofunction:: exec_cli

.. autofunction:: exec_cli_async

.. data:: CLI_EVENT_EXEC_REPLY

   Used in an :func:`exec_cli_async` callback to indicate this is part of the output.

.. data:: CLI_EVENT_EXEC_DONE

   Used in an :func:`exec_cli_async` callback to indicate the current command has finished.

.. data:: CLI_EVENT_EXEC_TIMEOUT

   Used in an :func:`exec_cli_async` callback to indicate the current command has timed out.


Extending the CLI
------------------------------------------------

A Python process can extend the CLI.  This is especially useful when coupled with the 
:ref:`cmbackend <cmbackend>`.

.. autofunction:: register_cli_tree


Namespaces
------------------------------------------------

EXOS namespaces can be used in the CLI for tab completion.  Each namespace is
a list of strings with an optional value.

.. autofunction:: namespace_add
.. autofunction:: namespace_delete
.. autofunction:: namespace_purge


Exceptions
------------------------------------------------

.. autoclass:: CLITimeoutError

.. autoclass:: CLICommandError