构建用于执行python或shell脚本的配方

metapensiero.recipe.script的Python项目详细描述


这个模块实现了两个简单的方法来执行一个shell脚本(实际上batch m$-windows下的脚本)或python脚本。

两个配方都有两个选项,installupdate:都被认为是 语句,每行一个,将写入一个临时文件中 分别在安装或更新配方时。其中一个可能不见了 这种情况下,这一特定步骤不会发生任何事情

当要执行的命令依赖于平台时,可以使用选项指定它们 install-linuxinstall-win32的优先级高于泛型表单。

shell脚本

metapensiero.recipe.script:shell配方由ShellScript类实现, 可按以下方式使用:

[config]
recipe = metapensiero.recipe.script:shell
ini = config.ini
install = ${buildout:bin-directory}/soladmin create-config ${:ini}

如前所述,有时要执行的命令取决于它们运行的特定平台。在 在这种情况下,您可以说:

[config]
recipe = metapensiero.recipe.script:shell
ini = config.ini
install = ${buildout:bin-directory}/soladmin create-config ${:ini}
install-win32 =
   ${buildout:bin-directory}/soladmin create-config ${:ini}
   echo Configuration created!
   pause

python脚本

metapensiero.recipe.script:python配方由^{tt8}实现$ 上课它更强大一些,因为它可以很容易地访问整个构建 配置

考虑以下示例:

[start_script]
recipe = metapensiero.recipe.script:python
install =
  >>> import sys
  >>> from os.path import join
  >>> basedir = buildout['buildout']['directory']
  >>> bindir = buildout['buildout']['bin-directory']
  >>> script = join(basedir, 'sol.bat' if sys.platform=='win32' else 'sol.sh')
  >>> config = join(basedir, buildout['config']['ini'])
  >>> with open(script, 'w') as f:
  >>>   if sys.platform == 'win32':
  >>>     f.write('@echo off\n')
  >>>   f.write('%s %s\n' % (join(bindir, 'solserver'), config))
  >>> installed = script

如您所见,脚本可以通过buildoutlocal访问其他节设置 变量,包含整个构建配置的字典另一个局部变量 是options,另一个包含配方设置的字典。

脚本可以设置installed变量,该变量可以是一个简单的标量字符串值 或字符串序列:它将用作配方的结果,通常是 配方本身安装的文件/目录列表,当 配方已从配置中删除

使用鸡蛋

如果Python脚本使用额外的egg,则可以使用eggs选项指定它们,如 在以下示例中:

[extjs]
recipe = metapensiero.recipe.script:python
eggs = metapensiero.extjs.desktop
install =
  >>> from metapensiero.extjs.desktop.scripts.extjs_dl import download_and_extract, URL
  >>> download_and_extract(URL)

更改

1.2(2014-03-08)

  • 简单测试套件
  • 修复python脚本中已安装内容的返回问题

1.1(2014-03-08)

  • pypi上的第一个版本

1.0(2014-03-08)

  • 初始版本,从solista中提取

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

推荐PyPI第三方库


热门话题
java如何创建Restful服务并将其部署到OSGi容器?   java如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?   java用户无法注销firebase 安卓   java Undertow始终将字符集添加到ContentType头,即使它不是文本MIME类型   java LocalBroadcastManager未正确接收消息   foreach在Java中有没有比For循环更好的方法可以灵活地遍历集合?   java如何在安卓上移动球   在OSGi下的Log4j中使所有记录器异步时,java ClassNotFoundException   java未知输入字节长度转换为int   java测试工厂在使用前缀命名时抛出NPE   对象的副本(JAVA)   java SP20310:无法打开文件。sql   java Spring安全性仅为一条路径添加安全性   java在idea中获取菱形运算符的编译错误