A package templating system.
Project description
# jetpack
[![Build Status](https://travis-ci.org/bmweiner/jetpack.svg?branch=master)](https://travis-ci.org/bmweiner/jetpack)
Jetpack is a package
[templating](https://en.wikipedia.org/wiki/Template_processor)
system based on the [mustache](http://mustache.github.io/) template syntax.
A jetpack template (pack) is just a directory containing subdirectories and
template files. A pack might be a
[python package](https://docs.python.org/2/tutorial/modules.html#packages),
[R package](https://cran.r-project.org/manuals.html#R-exts),
[Ruby gem](http://guides.rubygems.org/make-your-own-gem/),
anything...
Packs are stored in a [hanger](https://github.com/bmweiner/hanger) and
rendered by the jetpack utility.
## the Hanger
A simple hanger might look like this:
hanger/
pack1/
profile.md
pack.json
pack2/
bio.txt
pack.cfg
pack.json
Each pack has it's own directory in the hanger and contains all the
subdirectories and template files for that pack. Additionally `pack.cfg` and
`pack.json` files may exist at the hanger and/or pack level.
### Template Files
Templates use the [mustache](http://mustache.github.io/) template syntax
(implemented with [pystache](https://github.com/defunkt/pystache)).
Partials are relative to the hanger directory.
hanger/pack1/profile.md
# {{team}}
{{first}} {{last}}
{{role}}
## Bio
{{> pack2/bio.txt}}
Created: {{today}}
hanger/pack2/bio.txt
Belichick has extensive authority over the Patriots'...
### Context Files
Context is stored in **pack.json** files.
hanger/pack.json
{
"team": "New England Patriots"
}
hanger/pack1/pack.json
{
"first": "Bill",
"last": "Belichik",
"role": "coach"
}
#### Built-in Context
The default context includes the following tags, which can be overwritten in a
context file, if desired.
**datetime**
* today: %c
* year: %Y
* month: %m
* day: %d
* hour: %H
* minute: %M
* second: %S
### Configuration Files
Configuration is stored in **pack.cfg** files. The following options are
available:
A pack object can inherit the templates, contexts, and configurations of other
packs. Base classes are separated by a comma.
[class]
base: python,generic
#### Inheritance
When base classes are specified, templates, contexts, and configurations are
inherited in the following order:
* pack
* pack bases (recursive)
* hanger
Circular imports are not permitted.
Set the format of built-in context tags by using the datetime
[directives](https://docs.python.org/2/library/time.html#time.strftime).
[datetime]
today: %c
year: %Y
month: %m
day: %d
hour: %H
minute: %M
second: %S
## Installation
$ git clone https://github.com/bmweiner/jetpack.git
$ python setup.py install
or
$ pip install jetpack
## Usage
jetpack provides a terminal command `jetpack`:
$ jetpack python -s /path/to/hanger
name: my_package
description: The best package!
try `jetpack --help` for additional details on usage.
and a python module for interaction:
import jetpack
jetpack.launch(hanger='/path/to/hanger', pack='python', name='my_package',
description='The best package!')
## Example
Fork my [hanger](https://github.com/bmweiner/hanger) to get started. This
example demonstrates using...
* partials to create .gitignore and LICENSE
* subclasses to render python-flask pack from python pack
* built-in datetime context
[![Build Status](https://travis-ci.org/bmweiner/jetpack.svg?branch=master)](https://travis-ci.org/bmweiner/jetpack)
Jetpack is a package
[templating](https://en.wikipedia.org/wiki/Template_processor)
system based on the [mustache](http://mustache.github.io/) template syntax.
A jetpack template (pack) is just a directory containing subdirectories and
template files. A pack might be a
[python package](https://docs.python.org/2/tutorial/modules.html#packages),
[R package](https://cran.r-project.org/manuals.html#R-exts),
[Ruby gem](http://guides.rubygems.org/make-your-own-gem/),
anything...
Packs are stored in a [hanger](https://github.com/bmweiner/hanger) and
rendered by the jetpack utility.
## the Hanger
A simple hanger might look like this:
hanger/
pack1/
profile.md
pack.json
pack2/
bio.txt
pack.cfg
pack.json
Each pack has it's own directory in the hanger and contains all the
subdirectories and template files for that pack. Additionally `pack.cfg` and
`pack.json` files may exist at the hanger and/or pack level.
### Template Files
Templates use the [mustache](http://mustache.github.io/) template syntax
(implemented with [pystache](https://github.com/defunkt/pystache)).
Partials are relative to the hanger directory.
hanger/pack1/profile.md
# {{team}}
{{first}} {{last}}
{{role}}
## Bio
{{> pack2/bio.txt}}
Created: {{today}}
hanger/pack2/bio.txt
Belichick has extensive authority over the Patriots'...
### Context Files
Context is stored in **pack.json** files.
hanger/pack.json
{
"team": "New England Patriots"
}
hanger/pack1/pack.json
{
"first": "Bill",
"last": "Belichik",
"role": "coach"
}
#### Built-in Context
The default context includes the following tags, which can be overwritten in a
context file, if desired.
**datetime**
* today: %c
* year: %Y
* month: %m
* day: %d
* hour: %H
* minute: %M
* second: %S
### Configuration Files
Configuration is stored in **pack.cfg** files. The following options are
available:
A pack object can inherit the templates, contexts, and configurations of other
packs. Base classes are separated by a comma.
[class]
base: python,generic
#### Inheritance
When base classes are specified, templates, contexts, and configurations are
inherited in the following order:
* pack
* pack bases (recursive)
* hanger
Circular imports are not permitted.
Set the format of built-in context tags by using the datetime
[directives](https://docs.python.org/2/library/time.html#time.strftime).
[datetime]
today: %c
year: %Y
month: %m
day: %d
hour: %H
minute: %M
second: %S
## Installation
$ git clone https://github.com/bmweiner/jetpack.git
$ python setup.py install
or
$ pip install jetpack
## Usage
jetpack provides a terminal command `jetpack`:
$ jetpack python -s /path/to/hanger
name: my_package
description: The best package!
try `jetpack --help` for additional details on usage.
and a python module for interaction:
import jetpack
jetpack.launch(hanger='/path/to/hanger', pack='python', name='my_package',
description='The best package!')
## Example
Fork my [hanger](https://github.com/bmweiner/hanger) to get started. This
example demonstrates using...
* partials to create .gitignore and LICENSE
* subclasses to render python-flask pack from python pack
* built-in datetime context
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jetpack-1.1.tar.gz
(5.5 kB
view details)
File details
Details for the file jetpack-1.1.tar.gz
.
File metadata
- Download URL: jetpack-1.1.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d274a6a0077f6b51ca94cf6229da503d6c5f28169baee0704542f809c761b76e |
|
MD5 | 86c17fec015871413bb9bdebe6b740d8 |
|
BLAKE2b-256 | 58a4c42d0a3a80a1cbc55e907f43d4ea201fd4bbd827243a37b2cb46334c7c7f |