fig-py
======
``fig-py`` is a command line tool for generating skeletons of python
packages from a directory of ``jinja`` templates.
The interface is easy:
::
fig -p my-new-project -g my-github-user-name
This will initialize a highly-opinionated github repository, with your
command line args inserted in relevant places throughout the following
directory tree:
::
my-new-project
├── README.md
├── build_docs.sh
├── docs
│ ├── Makefile
│ ├── _static
│ │ └── logo.png
│ ├── _themes
│ │ ├── flask_theme_support.py
│ │ └── kr
│ │ ├── autotoc.html
│ │ ├── layout.html
│ │ ├── relations.html
│ │ ├── sidebarlogo.html
│ │ ├── static
│ │ │ └── flasky.css_t
│ │ └── theme.conf
│ ├── conf.py
│ ├── index.rst
│ └── install.rst
├── requirements.txt
├── setup.py
├── src
│ └── __init__.py
└── tests
├── README.md
├── __init__.py
├── fixtures
│ └── README.md
└── tests.py
This default template comes with ``nose`` for testing, ``sphinx`` for
docs (with Kenneth Reitz's Template), ``travis-ci`` for continuous
integration and ``pandoc`` for rendering your markdown README.md on
py-pi.
You can build and serve the docs by running ``build.sh``.
Customizing
-----------
If you'd like, you can also create your own folder of ``jinja``
templates and pass it in as follows:
::
fig -p my-new-project -g my-github-user-name -t path/to/my-template/
You can also pass in a series of custom json key-value pairs if you want
to add extra context:
::
fig -p my-new-project -g my-github-user-name -t my-template/ -k "{'key1':'value1', 'key2':'value2'}"
These values can be inserted anywhere in your custom templates using
standard ``jinja`` syntax:
::
{{ key1 }}, {{ key2 }}
Heres the full cli specification:
::
usage: fig [-h] [-p PROJECT_NAME] [-g GITHUB_USER] [-a AUTHOR] [-e EMAIL]
[-d DESCRIPTION] [-t TEMPLATE_PATH] [-k KWARGS]
Initialize a python repository.
optional arguments:
-h, --help show this help message and exit
-p PROJECT_NAME, --project-name PROJECT_NAME
The name of your project.
-g GITHUB_USER, --github-user GITHUB_USER
Your github user name.
-a AUTHOR, --author AUTHOR
Your name.
-e EMAIL, --email EMAIL
Your email.
-d DESCRIPTION, --description DESCRIPTION
The projects' description.
-t TEMPLATE_PATH, --template TEMPLATE_PATH
A directory of custom templates
-k KWARGS, --kwargs KWARGS
A json string or a .json / .yml filepath of custom
kwargs
Installation
------------
::
pip install fig-py
TODO: \* Don't rely on ``os.system()`` \* create repository on
``github`` \* activate virtualenv \* webhooks for read the docs / s3
upload for data / binaries.