跳转到主要内容

将类成员公开为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 (4.2 kB 查看哈希值)

上传时间

支持者