我正在使用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}$织物与定制参数化装饰器兼容吗?在
您需要使用python functools.wraps来包装您的decorator函数。看这个similar question。在
相关问题 更多 >
编程相关推荐