Skip to main content

DoubleLeft skeleton generator

Project description

# 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.

![dl-skel](docs/dlskel.png)

---

## 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dl-skel-0.1.2.tar.gz (111.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page