[PYTHON] Script avec la définition de la commande Paver

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.

installer

$ easy_install paver

Faire une tâche

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.

Prenez un argument

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']

Définir les options

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

Recommended Posts

Script avec la définition de la commande Paver
Script avec les opérations de fichier de paver
Script avec des commandes externes au pavé