Python织物定制d

2024-04-26 00:16:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Fabric1.8编写几个任务

因为大多数都很相似,所以我想做以下几点:

# Decorator for installation task
def install_task(test_task):
    def impl(install):
        def wrapper(*args, **kwargs):
            if not test_task():
                install()
            return test_task()
        return wrapper
    return impl

# Decorator for test task
def test_task(expected):
    def impl(test):
        def wrapper(*args, **kwargs):
            return expected in test()
        return wrapper
    return impl

# JAVA
@test_task('java version "1.7')
def test_java():
    return run('java -version')

@install_task(test_java)
def install_java():
    with sudo('apt-get purge openjdk*'):
        with sudo('apt-get install software-properties-common'):
            with sudo('add-apt-repository ppa:webupd8team/java'):
                with sudo('apt-get update'):
                    sudo('apt-get install oracle-java7-installer')

但当我尝试运行任务时,我得到:

^{pr2}$

织物与定制参数化装饰器兼容吗?在


Tags: installtestfortaskgetreturndefwith