2010-06-14 5 views
1

J'ai un problème avec l'écriture de mon plugin Bazaar.Écrire une commande Bazaar plugin - register?

J'ai essayé quelques choses différentes, ce qui est l'état actuel de mon dossier:

''' Testing Bzr plugins '''              
from bzrlib.commands import Command, register_command       

version_info = (0,0,1, 'dev')             

class cmd_test_foo(Command):              
    ''' Testing is painful. '''             

    def run(self):                
     print "hi"             

register_command(cmd_test_foo) 

Voici ce qui se passe lorsque je tente d'exécuter ma commande:

$bzr test-foo 
hi 
bzr: ERROR: unknown command "test-foo" 

Alors c'est vraiment bizarre - c'est évidemment exécuter ma commande, mais me dit que c'est inconnu?

Y a-t-il de bonnes sources pour les exemples de plugins? J'ai regardé le builtins.py comme suggéré here mais rien là n'a semblé aider.

Répondre

2

Comme je n'ai pas trouvé de véritable information sur cette erreur sur le web ou SO, j'ai décidé que je devrais poster et répondre à ma propre question.

Lorsque Bazaar importe un plugin, il crée un fichier .pyc exactement comme s'il importait normalement de Python. Si quelque chose de magique se produit - comme l'éditer dans un répertoire et oublier de le copier, puis créer un lien symbolique - il n'importera jamais les modifications. L'appel register_command(cmd_test_foo) est nécessaire pour que bazaar enregistre la commande, où cmd_test_foo est votre nom de commande. Lorsque vous appelez bzr l'aide des commandes il sera également affiché comme ceci:

$ bzr help commands 
... (snip commands) 
test-foo   Testing is painful. [testCmd] 
... (snip other commands) 

et aussi

$ bzr plugins 
testCmd 0.0.1.dev 
    Testing Bzr plugins 

bien sûr sur ce dernier, vous verrez aussi d'autres plug-ins que vous avez installés.