为所有内容创建包模板

sushi的Python项目详细描述


寿司

寿司是基于模板的包生成器。足够每次创建相同的包结构。为烧瓶,django或每一个你想要的样板创建自定义配方!

寿司可以学习/取消学习/升级你想要的每一个食谱。就像菜谱的包装经理。 你必须给每一本你想做寿司的食谱(储存库),所有的食谱都会提供给你。

当然,您可以很容易地创建自己的食谱,因为它们是github存储库。

功能

  • 基于Jinja2为所有内容创建模板
  • 每次都部署相同的程序
  • 制作烧瓶的特定配方,django,…
  • 使用助手(插件)以避免浪费时间
  • 自动git init您的包

寿司支持助手(扩展)和有很容易创建。已经有一些扩展,如git

快速启动

安装
pip install 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

第一个配方

在我的食谱上列出所有可用的食谱:

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

例如,学习basicone。

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

部署它!

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

配置

查看您的配置文件:~/.sushi/sushi.conf

创建自己的配方

说明

如果你想创建自己的菜谱,你必须在我的菜谱上创建一个请求,或者在Github上创建自己的菜谱。

菜谱是简单的folder档案,有一个基本的 结构,但文件中包含Jinja2代码。

如何

这是我的advanced配方的树示例:

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

所有文件都将由jinja2解析,下面列出的所有标记都将被替换。

文件名只有一个关键字需要知道:__app__将是 替换为格式化的模块名。

对于文件渲染:

KeywordValue
{{ 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)

以及可以添加到配置文件中的每个值 settings节。

创建自己的助手[重写]

说明

助手是寿司扩展,它们将在完成后运行。 呈现你的食谱。

如何

您的模块名必须是sushi_ext_name,它将被这样调用 sushi_ext_name.run(dst),wichdst是配方将 是渲染器。

您的助手可以像这样使用sushi.coreapi:

>>> 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'}

当然conf对象是ConfigParser,所以您可以询问 帮助用户在其配置文件中设置变量。

示例

您可以在github上找到一个示例。

许可证

许可证是AGPL3。见LICENSE

历史记录

0.2

  • 如果未检测到模板,则启动程序
  • 在删除时确认
  • 在init上添加–template选项
  • 在templates dir中添加默认示例和高级示例
  • 在PYPI上发布
  • 新的扩展系统

0.1

  • 初始版本
  • 添加/删除/列出模板
  • 初始化包

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法打开ServletContext资源[/WEBINF/mvcdispatcherservlet.xml]   java中的超时方法   java在ext2文件系统的根目录中创建新文件   java Oracle BPM 12c使用人工任务启动器的外部UI发送404弹出窗口   java获取组织。阿帕奇。hadoop。蜂箱ql.exec。矢量。DecimalColumnVector无法强制转换为org。阿帕奇。hadoop。蜂箱ql.exec。矢量。长柱向量   JavaGradle:向JAR文件的类路径添加类   playframework 2.0调用java中的scala操作来编写单元测试用例   循环Java在出现提示时无法收集字符串   需要帮助在Java中将数字转换为word吗   为什么人们忽视了java。类路径和。项目   使用快速搜索框的java动态安卓搜索   java Log4j未正确压缩   图像如何在grails/java中将PNG转换为jpeg   java以前使用过不同的监视器   EclipseLink对实体“setter”方法的java多次调用   javascript动态设置下拉列表的选定默认值   java如何从可扩展列表视图中删除子级   java中的单元测试