par Benoît Bryon - www.marmelune.net
PyCon FR - Pau - Octobre 2015
$ tree migrations/
migrations/
├── 1-hello.sh
└── 2-goodbye.py
$ cat migrations/1-hello.sh
#!/bin/bash
echo "Hello bash!"
... et des commandes à exécuter
Des fichiers à manipuler...
>>> import pathlib
>>> import subprocess
>>> for script in pathlib.Path('migrations').iterdir():
... subprocess.call(str(script))
Shell python :
>>> import pathlib
>>> import fabric.api
>>> for script in pathlib.Path('migrations').iterdir():
... fabric.api.local(str(script))
Shell python :
import fabric.api
def migrate():
ls_migrations = fabric.api.run('ls migrations')
migrations = ls_migrations.split()
for script in migrations:
fabric.api.run('migrations/{0}'.format(script))
fabfile.py :
import fabric.api
def migrate():
ls_migrations = fabric.api.run('ls migrations')
migrations = ls_migrations.split()
for script in migrations:
fabric.api.sudo('migrations/{0}'.format(script))
fabfile.py :
>>> import xal
>>> session = xal.LocalSession()
>>> for script in session.path('migrations').iterdir():
... session.sh.run(script)
def migrate(session):
for script in session.path('migrations').iterdir():
session.sh.run(script)
>>> session = xal.LocalSession()
>>> migrate(session)
Dans une session locale...
>>> session = xal.FabricSession(host='localhost')
>>> migrate(session)
... ou distante :
>>> import xal
>>> session = xal.LocalSession()
>>> with session.path.cd('demo'):
... file_path = session.path('hello.txt')
... if not file_path.exists():
... file_path.open('w').write('Hello world!')
... file_path.chmod(0o664)
>>> import xal
>>> session = xal.LocalSession()
>>> echo = session.sh("echo -n Hello")
>>> echo
ShCommand(echo -n Hello)
>>> result = echo() # Commands instances are callables.
>>> result.stdout
'Hello'
>>> result.return_code
0
>>> count_words = session.sh('wc -c')
>>> session.sh.run(echo | count_words).stdout # Pipes!
'5'
par Benoît Bryon - www.marmelune.net
PyCon FR - Pau - Octobre 2015