Skip to main content

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

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

jetpack-1.1.tar.gz (5.5 kB view details)

Uploaded Source

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

Hashes for jetpack-1.1.tar.gz
Algorithm Hash digest
SHA256 d274a6a0077f6b51ca94cf6229da503d6c5f28169baee0704542f809c761b76e
MD5 86c17fec015871413bb9bdebe6b740d8
BLAKE2b-256 58a4c42d0a3a80a1cbc55e907f43d4ea201fd4bbd827243a37b2cb46334c7c7f

See more details on using hashes here.

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