用于创建更好的结构任务的实用程序。

vo-fabutils的Python项目详细描述


用于创建更好的结构任务的实用程序。

安装

$ pip install vo-fabutils

用法

在fab文件中导入正确的fabutils模块 天。

示例

以json格式定义环境

首先,必须创建一个包含环境的json文件 配置。

#/path/to/environments/file.json{"devel":{"user":"devel-user","hosts":["dev.host.com"],"site_dir":"/path/to/devel/site/www/","command_prefixes":["/path/to/devel/site/env/bin/activate"]},"production":{"user":"prod-user","hosts":["host.com"],"site_dir":"/path/to/production/site/www/","command_prefixes":["/path/to/production/site/env/bin/activate"]}}

请注意:

  • 可以将任意字符串定义为env属性,这些属性将传递给任务的env。
  • 由织物“保留”名称的属性将由织物识别,并采用织物对其具有的特殊方法进行处理。
  • 唯一需要注意的是,如果您定义了一个command_prefixes数组,那么您必须只列出脚本的路径,并且它将自动以单词“souce”开头。例如,如果在命令前缀中定义../some_script,则它将转换为source ../some_script
  • 每个目录路径都必须以斜杠结尾。

接下来,在fabfile中导入fabutils.env.set_env,并创建一个任务,用json文件的路径调用它。

# fabfile.pyfromfabric.apiimporttaskfromfabutils.envimportset_env@taskdefenvironment(env_name):set_env(env_name,'/path/to/environments/file.json')
现在可以通过调用 environment:name之前
您的任务。
# Run a task in devel environment
$ fab environment:devel some_task

# Run a task in production environment
$ fab environment:production some_task

任意选项和参数

有时你只需要传递一个未知的 a的选项/参数
命令,在这种情况下,可以使用joinoptionsargumentsutils到
将pythonic*args转换为命令参数并**kwargs
命令选项。
fromfabric.apiimporttask,runfromfabutilsimportjoin,arguments,options@taskdefsome_task(*args,**kwargs):run(join('some_command',arguments(*args,**kwargs))

然后使用结构符号调用任务

$ fab some_task:arg1,arg2,kwarg1=val1,kwarg2=val2

# The above will be translated to:
# some_command arg1 arg2 kwarg1=val1 kwarg2=val2
如果将*kwargs传递给options,则 计算为布尔值
true将转换为--{key}符号。
...@taskdefanother_task(**kwargs):return(join('another_command',options(**kwargs)))...
$ fab another_task:option1=True,option2=No,option3=1,option4=False

# The above will be translated to:
# another_command --option1 --option3

当然,你可以把这两种方法结合起来。

...fromfabutilsimportboolean@taskdefthe_task(*args,**kwargs):options={}arguments={}fork,vinkwargs:ifboolean(v):options[k]=velse:arguments[k]=vrun(join('the_command',arguments(*args,**arguments),options(**options)))...
$ fab the_task:arg1,arg2=val2,option1=True

# The above will be translated to:
# the_command arg1 arg2=val2 --option1

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

推荐PyPI第三方库


热门话题
java在SWT中关闭CTabItem时如何获取警告消息?   java如何从中获取文本字符串   java带有(int[][])的方法意味着什么?   java我在创建这个安卓浮动泡泡动画时做错了什么?   将边距属性作为列表项的java表抛出异常ClassCastException   java如何在Storm拓扑中测量延迟和吞吐量   java如何在javafx中序列化事件?   java访问main()之外的线程   java如何强制某些方法仅对kotlin可见   java如何使用quartzscheduler启动具有多个crontrigger的作业?   java无法使用VM选项获取转储文件:引发OOM异常时出现HEAPDUMPONAUTOFMEMORYERROR   java无法在安卓中的FTP服务器上上载文件   java RecordView未显示   java有没有办法在Eclipse中隐藏/折叠虚张声势的注释?   java如何从xml中提取xml。广州?