Eh, kumaş ve hatta python için yeni olduğumu itiraf etmeliyim ama bunu doğru şekilde yapmakla ilgileniyorum, yani ... Bazılarımı süslemek istiyorum Önceden verilmiş olanlara bağlı olarak env
'a bazı varyasyonlar ekleyen prepare
işleviyle görevler. Bir göz atın:Kumaş görevine özel bir dekoratör nasıl eklenir
from fabric.api import *
import fabstork.project.base as base
import fabstork.utils.drupal as utils
def prepare(task):
""" Decorator to set some additional environment variables """
def prepared(*args, **kwargs):
env.sites_folder = env.sites_folder if 'sites_folder' in env else 'default'
env.settings_file = "%s/www/sites/%s/settings.php" % (env.build_path, env.sites_folder)
# more to come
return task(*args, **kwargs)
return prepared
@task
@prepare
def push(ref='HEAD'):
"""
Deploy a commit to a host
"""
base.push(ref)
utils.settings_php()
utils.link_files()
utils.set_perms()
Yukarıdaki örnek komut satırına bir fab --list
yaparken o push
hiçbir görev onun değil mevcut görevler listesinde, artık olduğu için başarısız olur. Dekoratörün çıkarılması mükemmel bir göreve yol açar. Neyi yanlış yapıyorum?
teşekkürler! Bu yüzden temelde kaçırdım ** @ wraps (func) **. Cevabınızı özellikle bunu belirtmek için günceller misiniz? – aaki