{ "info": { "author": "Geoffrey Lehee", "author_email": "geoffrey@lehee.name", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7" ], "description": "Sushi\n=====\n\nSushi 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!\n\nSushi can learn/unlearn/upgrade every recipes you want. Like package manager for recipes.\nYou have to give every cookbook (repository) you want to Sushi and all it's recipes will be available to you.\n\nAnd of course you can very easily create your own cookbook cause they are *Github* repositories.\n\nFeatures\n--------\n\n- Create template for everything based on Jinja2\n- Deploy the same everytime\n- Make specific recipe for Flask, Django, ...\n- Use helpers (plugins) to not waste time\n- Auto ``git init`` your package\n\nSushi support helper(extensions) and there are easy to create. There are already some extension, like ``git``.\n\nQuick start\n-----------\n\nInstallation\n~~~~~~~~~~~~\n\n::\n\n pip install sushi\n\nMeet the cookchef\n~~~~~~~~~~~~~~~~~\n\nIf it's the first time your run Sushi, your cookbook must be empty.\nYou can add my personnal cookbook to your in order to discover sushi:\n\n::\n\n Sushi \u00bb sushi cookbook-add socketubs/sushi-recipes\n ==> Add socketubs/sushi-recipes cookbook\n Cloning into 'socketubs/recipes'...\n remote: Counting objects: 126, done.\n remote: Compressing objects: 100% (84/84), done.\n remote: Total 126 (delta 46), reused 108 (delta 28)\n Receiving objects: 100% (126/126), 44.95 KiB, done.\n Resolving deltas: 100% (46/46), done.\n ==> Done\n\nFirst recipe\n~~~~~~~~~~~~\n\nList all recipes available on my cookbook:\n\n::\n\n Sushi \u00bb sushi all\n ==> Recipes available\n socketubs/recipes/advanced\n socketubs/recipes/basic\n socketubs/recipes/django\n socketubs/recipes/flask\n socketubs/recipes/helper\n\nAnd learn the ``basic`` one for example.\n\n::\n\n Sushi \u00bb sushi learn basic\n ==> Learn given recipe\n ==> Done\n\nDeploy it !\n\n:: \n\n Tests \u00bb sushi craft MyApp --recipe=basic\n ==> Craft your project\n => Recipe: basic\n ==> Call helpers\n ==> Done\n\nConfiguration\n-------------\n\nTake a look at your configuration file: ``~/.sushi/sushi.conf``.\n\nCreate your own recipe\n----------------------\n\nDescription\n~~~~~~~~~~~\n\nIf you want to create your own recipe, you have to create a pull request on my cookbook or create your own cookbook on __Github__. \n\n\nRecipes are simple ``folder`` archives with a basic\nstructure but with ``Jinja2`` code inside your files.\n\nHow to\n~~~~~~\n\nThis is a tree sample of my `advanced `_ recipe:\n\n::\n\n tree advanced\n advanced\n \u251c\u2500\u2500 .gitignore\n \u251c\u2500\u2500 README.md\n \u251c\u2500\u2500 __app__\n \u2502 \u251c\u2500\u2500 __init__.py\n \u2502 \u251c\u2500\u2500 cli.py\n \u2502 \u251c\u2500\u2500 core.py\n \u2502 \u2514\u2500\u2500 logger.py\n \u251c\u2500\u2500 bin\n \u2502 \u2514\u2500\u2500 __app__\n \u2514\u2500\u2500 setup.py\n\nAll files will be parsed by __Jinja2__ and all tags listed below will be replaced.\n\n\nThere is just one keyword to know for filename: ``__app__`` will be\nreplace by your formatted module name.\n\n\nAnd for file rendering:\n\n===================== =============\nKeyword Value \n--------------------- -------------\n{{ app }} Your app name \n{{ license }} Your favorite license (according to `OpenDefinition `_) \n{{ license_content }} Url to favorite license \n{{ username }} Operating system username\n{{ firstname }} Your firstname\n{{ lastname }} Your lastname\n{{ year }} Year\n{{ day }} Day\n{{ month }} Month\n{{ hour }} Hour\n{{ minute }} Minute\n{{ second }} Second\n{{ date }} Date (2012-09-01 16:55)\n===================== =============\n\nAnd every values you can add to your configuration file under\n``settings`` section.\n\nCreate your own helpers [REWRITE]\n---------------------------------\n\nDescription\n~~~~~~~~~~~\n\nHelpers are Sushi extensions, they will be run **after** complete\nrendering of your recipes.\n\nHow to\n~~~~~~\n\nYou module name must be ``sushi_ext_name`` and it will be call like that\n``sushi_ext_name.run(dst)``, wich ``dst`` is the path where recipe will\nbe renderer.\n\nYour helper can use ``sushi.core`` api like that:\n\n::\n\n >>> from sushi.core import conf\n >>> conf.get('settings', 'license')\n 'agpl-v3'\n >>> conf.get('paths', 'sushi_recipes')\n '/Users/socketubs/.sushi/recipes'\n >>> from sushi.env import get_env\n >>> get_env('my_package')\n {'username': 'socketubs',\n 'license_content': u'http://www.opensource.org/licenses/agpl-v3.html',\n 'hour': 21, 'day': 2, 'minute': 0, 'month': 9, 'second': 4, 'year': 2012,\n 'firstname': '## Set firstname',\n 'lastname': '## Set lastname',\n 'module': 'my_package',\n 'date': '2012-09-02 21:00',\n 'name': 'my_package',\n 'license': 'agpl-v3',\n 'email': '## Set email'}\n \n\nAnd of course ``conf`` object is ``ConfigParser``, so you can ask your\nhelper users to set variables in their configuration file.\n\nExample\n~~~~~~~\n\nYou can find an example on Github.\n\n- `sushi-git `_\n\nLicense\n-------\n\nLicense is `AGPL3`_. See `LICENSE`_.\n\n.. _recipes: http://sushi.socketubs.net/recipes\n.. _helpers: http://sushi.socketubs.net/helpers\n.. _AGPL3: http://www.gnu.org/licenses/agpl.html\n.. _LICENSE: https://raw.github.com/socketubs/sushi/master/LICENSE\n\n\nHistory\n=======\n\n0.2\n---\n\n- Starter if no template detected\n- Confirm on del\n- Add \u2013template option on init\n- Add default and advanced examples in templates dir\n- Released on pypi\n- New extension system\n\n0.1\n---\n\n- Initial release\n- Add/Del/List templates\n- Init packages", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/socketubs/sushi/", "keywords": "sushi package python linux", "license": "Sushi\nCopyright (C) 2013 Geoffrey Leh\u00e9e [http://geoffrey.lehee.name/]\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program. If not, see .", "maintainer": null, "maintainer_email": null, "name": "sushi", "package_url": "https://pypi.org/project/sushi/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/sushi/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/socketubs/sushi/" }, "release_url": "https://pypi.org/project/sushi/0.3.6/", "requires_dist": null, "requires_python": null, "summary": "Create package template for everything", "version": "0.3.6" }, "last_serial": 2246829, "releases": { "0.3.5": [], "0.3.6": [ { "comment_text": "", "digests": { "md5": "c67553a36e044ee25f4443196a674fa4", "sha256": "6f82510e88f7814d7edefb4c2f6305362891d033bb122a80078772a48d8c6b4e" }, "downloads": -1, "filename": "sushi-0.3.6.tar.gz", "has_sig": false, "md5_digest": "c67553a36e044ee25f4443196a674fa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10058, "upload_time": "2016-07-27T12:14:10", "url": "https://files.pythonhosted.org/packages/2b/79/0883e0b8e599d48d0845192470d8a0e9c87530e02aa6a84c13994a6a718d/sushi-0.3.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c67553a36e044ee25f4443196a674fa4", "sha256": "6f82510e88f7814d7edefb4c2f6305362891d033bb122a80078772a48d8c6b4e" }, "downloads": -1, "filename": "sushi-0.3.6.tar.gz", "has_sig": false, "md5_digest": "c67553a36e044ee25f4443196a674fa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10058, "upload_time": "2016-07-27T12:14:10", "url": "https://files.pythonhosted.org/packages/2b/79/0883e0b8e599d48d0845192470d8a0e9c87530e02aa6a84c13994a6a718d/sushi-0.3.6.tar.gz" } ] }