Nun, ich muss zugeben, ich bin neu in Fabric und sogar Python, aber ich bin daran interessiert, es richtig zu machen, also ... Ich möchte einige meiner schmücken Aufgaben mit einer prepare
Funktion, die einige vars zu env
abhängig von denen bereits gegeben hinzufügt. Werfen Sie einen Blick:Wie man einen benutzerdefinierten Dekorator zu einer Fabric-Aufgabe hinzufügt
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()
Das obige Beispiel nicht für die push
keine Aufgabe mehr ist, es ist nicht in der Liste der verfügbaren Aufgaben, wenn ein fab --list
in der Befehlszeile zu tun. Das Weglassen des Dekorators führt zu einer perfekten Aufgabe. Was mache ich falsch?
Dank! Also verpasste ich im Grunde ** @ Wraps (func) **. Könnten Sie Ihre Antwort aktualisieren, um darauf hinzuweisen? – aaki