easysetup
=========

Helps creating a package distribution setup, that also runs tests, checkers and creates HTML and PDF documentation, for Windows users.

Description, features and To do
-------------------------------

**Description**

Helps creating a package distribution setup, that also runs tests and creates HTML and PDF documentation, for Windows users.

When running easysetup without options, everything on the current directory is moved to a _bak directory.

After running easysetup, you can find a build.cmd in the current directory that should be run to build your application (execute build -h to see usage options).

Before runnning build.cmd for the first time, you should execute 

.. code:: bash

    $ pip install -r requirements-dev.txt

to install it's requirements.

**Features:**

* Easy to use, just run easysetup from your application setup directory (it backups everything in current directory to _bak directory when run without options).
* Allows creating source, wheel, win (exe or msi), py2exe, egg, dumb (zip on windows, tar/ztar/gztar/zip on GNU Linux in the future) and rpm (on GNU Linux in the future) dists.
* All setup configuration is in one file (appinfo.py).
* Runs tests and creates HTML and PDF documentation (if you have them, of course).
* Can publish to PyPI (including documentation if exists) and PyPI tests.

* Creates index.html with redirection to RTD, to be used if preferred for hosting documentation.
* Creates templates for Travis, Shippable and tox.
* Creates a template for development requirements.
* Creates a template for installation requirements.
* Creates a template for git VCS exceptions.
* Creates a template for files to be included in the setup.
* Creates a template for a README file.
* Creates a template for wheel setup and Sphinx documentation upload.
* Can create template files in the doc directory (assumes use of Sphinx and that the sphinx-quickstart command was already executed).
* Can create an updated reference.rst in the doc directory (assumes previous item with the autodoc extension).
* Updates usage section in README.rst based on usage.txt, if it exists inside your application directory.
* Saves answers (DEFAULT_AUTHOR, DEFAULT_EMAIL, DEFAULT_LICENSE, DEFAULT_URL and DEFAULT_VERSION) for future use in other applications.
* Recreates reference.rst in the doc directory on each build (can be disabled inside build.cmd by changing the REBUILD_REFERENCE=YES to other value).
* If the setup directory is empty then a main template file is created inside the application directory.
* Checks source code with flake8 and Py3 compatibility with pylint.
* Add URLs to README.rst for PyPI, PyPI documentation site and RTD.

**To do**

* Add appveyor templates.
* Auto rebuild requirements.txt on each dist build.
* Change easysetup from Windows only to universal (move build.cmd functionality to easysetup.py).
* CXF in Py2 and Py3.
* Checks and error messages.
* Compile TODOs from py files into README.

Installation, usage and options
-------------------------------

**Installation**

.. code:: bash

    $ pip install easysetup
	
**Usage**

.. code:: bash

    $ easysetup

**Options**

.. code:: bash

    $ easysetup -h

    usage: easysetup [-option]

    optional arguments:
      -d, --doc             creates template files in the doc directory
      -h, --help            show this help message
      -l, --license         show license
      -q, --quiet           no banner
      -r, --reference       creates an updated reference.rst in the doc directory
      -V, --version         show version

    No arguments (or only -q, --quiet) creates setup files.
    easysetup should always be run from the application setup directory.

Resources and contributing
--------------------------

**Resources**

* `Repository PyPI <https://pypi.python.org/pypi/easysetup>`_
* `Documentation PyPI <http://pythonhosted.org/easysetup>`_
* `Repository Github <https://github.com/jcrmatos/easysetup>`_
* `Documentation Read the Docs <http://easysetup.readthedocs.org>`_

**Contributing**

If Other repository above is Github or compatible, follow these guidelines for contributing:

1. Fork the `repository`_ .
2. Make a branch of master and commit your changes to it.
3. Ensure that your name is added to the end of the AUTHORS.rst file using the format:
   ``Name <email@domain.com>``
4. Submit a Pull Request to the master branch.

.. _repository: https://github.com/jcrmatos/easysetup

Copyright 2009-2015 Joao Carlos Roseta Matos. Licensed under the GNU General Public License v2 or later (GPLv2+).
