# dl-skel
dl-skel.py provides skeleton generator for you to avoid creating a
project from zero everytime.
Its useful to bootstrap general projects, like HTMLBootstrap, PythonPackage,
and others. It will download a GIT repository available on the net, and
process some files to change names and so on.
In the end, you will have a new folder, with `dlbuild.py` that can be used
to `runserver`, or `build` the project.

---
## Installation
Install it via pip (`pip install dl-skel`), or manually:
```
$ git clone git@github.com:doubleleft/dl-skel.git
$ cd dl-skel
$ python setup.py install
```
This will create a `dl-skel.py` bin in your path (virtualenv or systemwide)
## CLI Usage
Usage via CLI app called `dl-skel.py`
```
Usage: dl-skel.py [options]
Options:
-h, --help show this help message and exit
--skeleton-config=SKELCONFIG
dlskel Config file. Default is ~/.dl-skel/config.json
--skeleton-path=SKELPATH
Use another Skeleton Search Path. Default is ~/.dl-skel/
-l, --list List skeletons
Import new Template:
-i <GIT_REPO> <TEMPLATE_NAME>, --import=<GIT_REPO> <TEMPLATE_NAME>
import a new template from the given GIT
repository.
Create a new project:
-c <TEMPLATE_NAME> <OUTPUT>, --create=<TEMPLATE_NAME> <OUTPUT>
Create a new <project> skeleton
```
## Default Skeletons
You can check all available skeletons using `-l`:
```
$ dl-skel.py -l
wordpress5 https://github.com/doubleleft/skeleton-wordpress Wordpress 5.0
```
Template | URL
--- | ---
wordpress5 | [skeleton-wordpress](https://github.com/doubleleft/skeleton-wordpress)
HTMLRichApp | [skeleton-htmlrichapp](https://github.com/doubleleft/skeleton-htmlrichapp)
HTMLSimleApp | [skeleton-wordpress](https://github.com/doubleleft/skeleton-wordpress)
## Create a new project
To create a new project using a base skeleton, try option `-c`
```
$ dl-skel.py -c python ../my-shiny-project
Cloning python(https://github.com/ionelmc/projectskel) into ../my-shiny-project
```
## Importing your own skeletons
To import your own skeletons, use `-i`
```
$ dl-skel.py -i <REPO_URL> <SKELETON_NAME>
```
This will import `<REPO_URL>` and save it as `<SKELETON_NAME>`.
You can now create new projects using `<SKELETON_NAME>`
```
$ dl-skel.py -c <SKEL_NAME> name-of-my-project
```
# Creating my own skeletons
Skeletons are simple **GIT** repositories, with a special recipe stored in the
file `dlbuild`. This recipe tells what to substitute, download, install,
pretty much by hand.
You MUST create the following functions in the `dlbuild.py` file:
setup (Download and replace files)
build (Build project)
while others functions, like `runserver` are optional.
To see a simple example of a skeleton, check [skeleton-wordpress](https://github.com/doubleleft/skeleton-wordpress/blob/master/dlbuild.py)
# Using it inside python
You can use it direcly as an API in python
```
$ python
>>> from dlskel.skel import skeleton_create, make_password
>>> skeleton_create( 'git@github.com:doubleleft/skeleton-wordpress.git',
'my-wp-project',
skel_vars={
'DB_NAME': 'myproj',
'DB_USER': 'myuser',
'DB_PASSWORD': make_password(length=8) })
```
---
### TODO
- ✓ Add better file substituion via jinja2 template
- ✓ Add simple API for using it inside python
- ✓ Finish setup.py and make it pip installable
- ✓ Delete repository .git when creating a new project.
- Add dependencies check and installation (if necessary)
- ** Create Skeletons **
* ✓ Wordpress Skeleton
* Laravel Skeleton
* ✓ Python Package Skeleton
* Python Flask Skeleton
* HTML Bootstrap Skeleton
* HTML Static Skeleton