La opción Fabric -f no funciona

He estado usando Fabric con éxito desde mi máquina local por un time y finalmente tengo un script de implementación decente que me gustaría llamar durante un gancho de Git post-receive. Para lograr esto, tengo el siguiente código, que se verifica hasta el command fab :

 deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY if [[ $deploy ]] ; then TMPFILE="/tmp/$(basename $0).$$.tmp" git cat-file blob release:fabfile.py > $TMPFILE fab -f $TMPFILE deploy:servername.mycompany.com rm $TMPFILE fi 

Revisé cada paso del path y estoy seguro de que TMPFILE se está creando correctamente (contiene mi file fab). Ejecutar manualmente los pasos anteriores con un file compuesto en / tmp / produce el mismo comportamiento.

La peor parte es que me "restring" que puedo usar -f para especificar un fabfile … que soy.

Esto es porque quiere un file con el .py al final. Cambie su file temporal para usar esta extensión de file y funcionará. Es muy probable que Fab quiera permitir que las personas usen classs de directory de estilo python, ya que fabfile/__init__.py sería recogido con un -f fabfile

Ejemplo de este comportamiento aquí:

 ╭─mgoose@Macintosh ~ ╰─$ fab -f tmp.py test [localhost] local: whoami mgoose Done. ╭─mgoose@Macintosh ~ ╰─$ mv tmp.py tmp.py.tmp ╭─mgoose@Macintosh ~ ╰─$ fab -f tmp.py.tmp test Fatal error: Couldn't find any fabfiles! Remember that -f can be used to specify fabfile path, and use -h for help. Aborting. ╭─mgoose@Macintosh ~ ╰─$ cat tmp.py.tmp 1 ↵ from fabric.api import local, task @task def test(): local("whoami")