Paver est une bibliothèque permettant de créer facilement des outils de ligne de commande en Python.
Vous pouvez facilement créer des outils de ligne de commande dans une certaine mesure en utilisant la bibliothèque Python standard `ʻargparse``, mais l'utilisation de Paver facilite énormément la création de scripts avec des sous-commandes en particulier. ..
La documentation originale de Paver se concentre sur l'automatisation de l'empaquetage Python, je voudrais donc l'expliquer en tant qu'outil de définition et d'exécution de tâches.
$ easy_install paver
Si vous créez un fichier appelé pavement.py '' puis créez une fonction avec un décorateur appelé
@ task``, cela devient une tâche.
pavement.py
from paver.easy import *
@task
def hello():
"""My first task."""
print 'hello'
Pour exécuter la tâche, exécutez `` nom de la tâche du finisseur ''.
$ paver hello
---> pavement.hello
hello
paver -h
affiche également les tâches que vous avez définies. docstrin est la description de cette commande.
$ paver -h
---> paver.tasks.help
Usage: paver [global options] taskname [task options] [taskname [taskoptions]]
Options:
--version show program's version number and exit
-n, --dry-run don't actually do anything
…
Tasks from pavement:
hello - My first task.
Pour prendre un argument, ajoutez le décorateur @ consume_args
à la fonction définissant la tâche et écrivez l'argument `ʻargs``.
pavement.py
from paver.easy import *
@task
@consume_args
def hello(args):
"""My first task."""
print 'hello', args
$ paver hello foo bar
---> pavement.hello
hello ['foo', 'bar']
Utilisez le décorateur @ cmdopts
pour définir les options et l'argument ```optionspour les recevoir. Passez l'option au décorateur
@ cmdoptscomme argument une liste définie dans un tuple de la forme
(nom long, une lettre, aide) ''. L'ajout de `` à la fin d'un nom long vous donne la possibilité de prendre un argument.
pavement.py
from paver.easy import *
@task
@cmdopts([
('foo', 'f', "The foo"), # -pour--foo
('bar=', 'b', "Bar bar bar"), # -b xxx ou--bar=xxx
])
def hello(options):
"""My first task."""
print 'hello', options.foo, options.bar
$ paver hello --foo -b 3
---> pavement.hello
hello True 3
En fait, options
est défini comme une variable globale de paver.easy
même si elle n'est pas prise comme argument, donc si vous faites à partir de paver.easy import *
, vous n'avez pas à prendre d'argument. Peut également être utilisé.
pavement.py
from paver.easy import *
@task
@cmdopts([
('foo', 'f', "The foo"),
('bar=', 'b', "Bar bar bar"),
])
def hello():
"""My first task."""
print 'hello', options.foo, options.bar