*****************
Project bootstrap
*****************

.. contents::
   :depth: 2

EnOSlib project can be a single python file but sometimes it's better to
structure a bit more your experimental framework. In this direction, we're
doing our best to maintain a project template that you can use.

This includes:

* an example to work with the Vagrant and Grid'5000 provider
* a command line interface
* a set of `enostask` to orchestrate a minimal experience
* third party tools like `sphinx` (documentation), `pytest` (unit tests), `tox`
  and a `travis` integration.


Bootstrap a new project
=======================

Install the latest Cookiecutter if you haven't installed it yet (this requires
Cookiecutter 1.4.0 or higher)::

    pip install -U cookiecutter

Generate an Enoslib project::

    cookiecutter https://github.com/msimonin/cookiecutter-enoslib.git

You'll be asked for some information::

    author [John Doe]: Matthieu Simonin
    project_name [Enoslib boilerplate]: my_project
    project_slug [my_project]:
    project_short_description [Boilerplate to bootstrap a new experimentation framework using Enoslib]:
    version [0.0.1]:
    project_url []: https://github.com/msimonin/my_project
    cli_name [my_project]: mp


Using the new project
=====================

Within a virtualenv you can do::

    pip install -e .

and start using the cli (the cli name has been filled above)::

    mp --help

    Usage: mp [OPTIONS] COMMAND [ARGS]...

    Options:
      --help  Show this message and exit.

    Commands:
      deploy     Claim resources from a PROVIDER and configure...
      destroy    Destroy the deployed environment
      g5k        Claim resources on Grid'5000 (frontend).
      prepare    Configure available resources [after deploy,...
      vagrant    Claim resources on vagrant (localhost).

..