将类成员公开为Fabric任务
项目描述
Fabric具有基于类的任务,但它们有限:Task类代表单个任务。
此模块使能够拥有基于类的Fabric任务集。
安装
pip install fabric-taskset
用法
TaskSet是一个可以将其方法公开为Fabric任务的类。
示例
# fabfile.py from fabric.api import local from taskset import TaskSet, task_method class SayBase(TaskSet): def say(self, what): raise NotImplementedError() @task_method(default=True, alias='hi') def hello(self): self.say('hello') @task_method def bye(self): self.say('goodbye') class EchoSay(SayBase): def say(self, what): local('echo ' + what) say = EchoSay().expose_as_module('say')
然后
$ fab -l Available commands: say say.bye say.hello say.hi $ fab say.hi hello
taskset.task_method是一个声明包装方法为任务的装饰器。它接受与fabric.decorators.task相同的参数,因此可以在方法上使用它,就像在函数上使用fabric的装饰器一样。
您还可以创建一个“磁盘上的”Python模块,并用任务填充它
# my_lib/say.py from taskset import TaskSet, task_method class SayBase(TaskSet): def say(self, what): raise NotImplementedError() @task_method(default=True, alias='hi') def hello(self): self.say('hello') class EchoSay(SayBase): def say(self, what): local('echo ' + what) instance = EchoSay() instance.expose_to_current_module() # fabfile.py from mylib import say
致谢
https://github.com/ramusus/fabriclassed是一个非常相似的应用程序。在编写本文时,它专注于旧式Fabric任务,并包含一个小型部署框架。
为了满足我的NIH综合征,我创建了Fabric-taskset,它公开了新式Fabric任务,提供了略微不同的API,并且没有额外的功能。
然后这个库演变为支持暴露任务而无需创建虚拟磁盘上的模块(感谢Denis Untevskiy)。
变更
0.2.1 (2012-09-21)
private _expose_to 方法现在返回列表,而不是生成器。
0.2 (2012-08-28)
@task 装饰器已弃用,并替换为 @task_method。这个名字不好,因为与 @fabric.task 装饰器冲突(感谢Denis Untevskiy);
Taskset.expose_as_module 方法允许从命令行使用TaskSet实例,而无需在磁盘上创建虚拟模块(感谢Denis Untevskiy)。
0.1 (2012-03-03)
初始发布。
项目详情
关闭
fabric-taskset-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ead6bd24f081cffe5950eda4a3d2b48a65affbee7627557f4e5450aa1b628025 |
|
MD5 | f1b5d1f780b8eb52e24abf1f7c0ca4c2 |
|
BLAKE2b-256 | 1fcaf9551cb12fd3ca7ef36f131cc7f4fe4fcec9b0e574dfb37b6721a357be2a |