SDK
===

Starting with version **0.3.0** of Fantastico framework all dispersed shell scripts are unified under Fantastico Software
Development Kit. In addition, the sdk is complemented by autogenerated documentation.

Intro
-----

Fantastico sdk was developed with the following requirements in my mind:

   * Allow developers to manage Fantastico projects easily (using a single uniform command line). This is similar to many other frameworks (e.g **android sdk**).
   * Allow easily extension of sdk through plugins (e.g: activate off the shelf components into my project).
   * Create a uniform way to provide feedback to developers (prompt user for data, show help messages, support parameters).
   * Make the sdk compliant with linux way of developing command lines.

Usage
-----

In this section you can find samples of how to use the sdk and how to make it available in older projects.

.. code-block:: bash

   # For versions prior to **0.3.0**
   pip install fantastico -U

   fsdk --help

When you invoke fantastico sdk with **--help** argument it will list all available commands.
Similar to other linux command lines you can obtain help hierarchical:

.. code-block:: bash

      # Show help screen for fantastico <command>
      fsdk <command> --help

In order for Fantastico SDK to work correctly make sure your project is on the **PYTHONPATH**. If **PYTHONPATH** is not set
correctly you will not be able to use some sdk extensions.

Supported commands
------------------

.. toctree::
   :glob:

   sdk/command_*

Technical summary
-----------------

.. autoclass:: fantastico.sdk.fantastico.SdkCore
   :members:

.. autoclass:: fantastico.sdk.sdk_core.SdkCommandsRegistry
   :members:

.. autoclass:: fantastico.sdk.sdk_core.SdkCommandArgument
   :members:

.. autoclass:: fantastico.sdk.sdk_core.SdkCommand
   :members:

.. autoclass:: fantastico.sdk.sdk_decorators.SdkCommand
   :members:
   
.. autoclass:: fantastico.sdk.sdk_exceptions.FantasticoSdkError
   :members:

.. autoclass:: fantastico.sdk.sdk_exceptions.FantasticoSdkCommandError
   :members:

.. autoclass:: fantastico.sdk.sdk_exceptions.FantasticoSdkCommandNotFoundError
   :members:
   