"""Example Plugin for EasyEngine."""

from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook

def example_plugin_hook(app):
    # do something with the ``app`` object here.
    pass

class ExamplePluginController(CementBaseController):
    class Meta:
        # name that the controller is displayed at command line
        label = 'example'

        # text displayed next to the label in ``--help`` output
        description = 'this is an example plugin controller'

        # stack this controller on-top of ``base`` (or any other controller)
        stacked_on = 'base'

        # determines whether the controller is nested, or embedded
        stacked_type = 'nested'

        # these arguments are only going to display under
        # ``$ ee example --help``
        arguments = [
            (
                ['-f', '--foo'],
                dict(
                    help='Notorious foo option',
                    action='store',
                    )
            )
        ]

    @expose(hide=True)
    def default(self):
        print("Inside ExamplePluginController.default()")

    @expose(help="this is an example sub-command.")
    def example_plugin_command(self):
        print("Inside ExamplePluginController.example_plugin_command()")


def load(app):
    # register the plugin class.. this only happens if the plugin is enabled
    handler.register(ExamplePluginController)

    # register a hook (function) to run after arguments are parsed.
    hook.register('post_argument_parsing', example_plugin_hook)