Hi,
Consider the following fabric-1 task. For illustration I kept it really short: @fab.task def sample(): version = fab.local('python setup.py --version') fab.run('mkdir -p /snapshots/%s' % version.strip()) This task needs to run a local and remote command. I am now trying to port this to fabric-2, and I can't figure out how I can implement this. If I define the "hosts" variable in the task, then the first line will be executed on the remote host as well, which I don't want. A naive aproach which won't work: @task(hosts=PROD) def sample(ctx): version = ctx.run('python setup.py --version').strip() # <- this won't work ctx.run('mkdir -p /snapshots/%s' % version) At first I thought I would split the task into two, one for just local commands and one for remote tasks, but then I am forced to pass in the context, which will in turn cause it again to be run remotely: @task def get_version(ctx): version = ctx.run('python setup.py --version').strip() return version @task(hosts=PROD) def sample(ctx): version = get_version(ctx) # <- this won't work ctx.run('mkdir -p /snapshots/%s' % version) How can I accomplish something like this? And where is it noted in the docs? In the current example on the "Upgrading from 1.x" page does not have a single task mixing local with remote commands in any way. Regards, Mich
_______________________________________________ Fab-user mailing list Fab-user@nongnu.org https://lists.nongnu.org/mailman/listinfo/fab-user