2010-06-14 98 views
1

我在寫我的Bazaar插件時遇到問題。寫一個Bazaar插件 - 註冊命令?

我一直在嘗試一些不同的東西,這是我的文件的當前狀態:

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

這裏的時候我嘗試執行我的命令會發生什麼:

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

所以這真的很奇怪 - 顯然是在運行我的命令,但告訴我它是未知的?

插件示例有沒有好的來源?我已經看過builtins.py,建議here,但似乎沒有任何幫助。

回答

2

因爲我在網上找不到任何關於這個錯誤的真實信息,所以我決定發帖回答我自己的問題。

當Bazaar導入一個插件時,它會像通常從Python導入一樣創建一個.pyc文件。如果發生了不可思議的事情 - 比如在一個目錄中編輯並忘記複製它,然後創建符號鏈接 - 它將永遠不會導入修改。調用市場時需要調用register_command(cmd_test_foo)命令,其中cmd_test_foo是您的命令名稱。當你打電話的bzr幫助命令它也將出現像這樣:

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

$ bzr plugins 
testCmd 0.0.1.dev 
    Testing Bzr plugins 
當然對最後一個,你也可以看到你可能已經安裝任何其他插件的