Skip to main content

Create package template for everything

Project description

Sushi

Sushi is package builder based on template. Enough to create same package structure every time. Create custom recipes for Flask, Django or every BoilerPlate you want!

Sushi can learn/unlearn/upgrade every recipes you want. Like package manager for recipes. You have to give every cookbook (repository) you want to Sushi and all it’s recipes will be available to you.

And of course you can very easily create your own cookbook cause they are Github repositories.

Features

  • Create template for everything based on Jinja2

  • Deploy the same everytime

  • Make specific recipe for Flask, Django, …

  • Use helpers (plugins) to not waste time

  • Auto git init your package

Sushi support helper(extensions) and there are easy to create. There are already some extension, like git.

Quick start

Installation

pip install sushi

Meet the cookchef

If it’s the first time your run Sushi, your cookbook must be empty. You can add my personnal cookbook to your in order to discover sushi:

Sushi » sushi cookbook-add socketubs/sushi-recipes
==> Add socketubs/sushi-recipes cookbook
Cloning into 'socketubs/recipes'...
remote: Counting objects: 126, done.
remote: Compressing objects: 100% (84/84), done.
remote: Total 126 (delta 46), reused 108 (delta 28)
Receiving objects: 100% (126/126), 44.95 KiB, done.
Resolving deltas: 100% (46/46), done.
==> Done

First recipe

List all recipes available on my cookbook:

Sushi » sushi all
==> Recipes available
socketubs/recipes/advanced
socketubs/recipes/basic
socketubs/recipes/django
socketubs/recipes/flask
socketubs/recipes/helper

And learn the basic one for example.

Sushi » sushi learn basic
==> Learn given recipe
==> Done

Deploy it !

Tests » sushi craft MyApp --recipe=basic
==> Craft your project
  => Recipe: basic
==> Call helpers
==> Done

Configuration

Take a look at your configuration file: ~/.sushi/sushi.conf.

Create your own recipe

Description

If you want to create your own recipe, you have to create a pull request on my cookbook or create your own cookbook on __Github__.

Recipes are simple folder archives with a basic structure but with Jinja2 code inside your files.

How to

This is a tree sample of my advanced recipe:

tree advanced
advanced
├── .gitignore
├── README.md
├── __app__
│   ├── __init__.py
│   ├── cli.py
│   ├── core.py
│   └── logger.py
├── bin
│   └── __app__
└── setup.py

All files will be parsed by __Jinja2__ and all tags listed below will be replaced.

There is just one keyword to know for filename: __app__ will be replace by your formatted module name.

And for file rendering:

Keyword

Value

{{ app }}

Your app name

{{ license }}

Your favorite license (according to OpenDefinition)

{{ license_content }}

Url to favorite license

{{ username }}

Operating system username

{{ firstname }}

Your firstname

{{ lastname }}

Your lastname

{{ year }}

Year

{{ day }}

Day

{{ month }}

Month

{{ hour }}

Hour

{{ minute }}

Minute

{{ second }}

Second

{{ date }}

Date (2012-09-01 16:55)

And every values you can add to your configuration file under settings section.

Create your own helpers [REWRITE]

Description

Helpers are Sushi extensions, they will be run after complete rendering of your recipes.

How to

You module name must be sushi_ext_name and it will be call like that sushi_ext_name.run(dst), wich dst is the path where recipe will be renderer.

Your helper can use sushi.core api like that:

>>> from sushi.core import conf
>>> conf.get('settings', 'license')
'agpl-v3'
>>> conf.get('paths', 'sushi_recipes')
'/Users/socketubs/.sushi/recipes'
>>> from sushi.env import get_env
>>> get_env('my_package')
{'username': 'socketubs',
 'license_content': u'http://www.opensource.org/licenses/agpl-v3.html',
 'hour': 21, 'day': 2, 'minute': 0, 'month': 9, 'second': 4, 'year': 2012,
 'firstname': '## Set firstname',
 'lastname': '## Set lastname',
 'module': 'my_package',
 'date': '2012-09-02 21:00',
 'name': 'my_package',
 'license': 'agpl-v3',
 'email': '## Set email'}

And of course conf object is ConfigParser, so you can ask your helper users to set variables in their configuration file.

Example

You can find an example on Github.

License

License is AGPL3. See LICENSE.

History

0.2

  • Starter if no template detected

  • Confirm on del

  • Add –template option on init

  • Add default and advanced examples in templates dir

  • Released on pypi

  • New extension system

0.1

  • Initial release

  • Add/Del/List templates

  • Init packages

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

sushi-0.3.7.tar.gz (12.6 kB view details)

Uploaded Source

File details

Details for the file sushi-0.3.7.tar.gz.

File metadata

  • Download URL: sushi-0.3.7.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for sushi-0.3.7.tar.gz
Algorithm Hash digest
SHA256 81004003ca7370a965ed600e653d77409cb55fe5c9ec28a0842b003d8bcae231
MD5 da4af26dd63135457d616deea771aed0
BLAKE2b-256 857df209c92f6d9ccf57e37a4c4e1779c7a8ccee715d9a8eec1a748f0b284be9

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