pylons アプリケーションでは
$ paster controller bar
を実行すると、コントローラーとテストの骨組みを自動生成してくれます。
このコマンドが実行できる仕組みは、次のようになっています。
- pylons アプリケーション(例: welle)のwelle/egg-info/paster_plugins.txt を見ると、"Pylons", "WebHelpers", "PasteScript"と書かれています。paste はこれを見ます。
- Pylons のEGG-INFO/entry_points.txt を見ると、次のように書かれています。
[paste.paster_command] controller = pylons.commands:ControllerCommand restcontroller = pylons.commands:RestControllerCommand shell = pylons.commands:ShellCommand [paste.paster_create_template] pylons = pylons.util:PylonsTemplate pylons_minimal = pylons.util:MinimalPylonsTemplate [python.templating.engines] pylonsmyghty = pylons.templating:MyghtyTemplatePlugin [myghty] [nose.plugins] pylons = pylons.test:PylonsPlugin
- paste は、[paste.paster_command] をみます。"
$ paster controller hoge
" の場合、paste.script.command パッケージのCommand を継承した ControllerCommand が呼び出されます。
まとめると、
- mycms にCommand を継承したオリジナルコマンドを実装する。
- mycms のEGG-INFO/entry_points の paste.paster_command ディレクティブで、オリジナルコマンドの場所を教える。
- mycms から生成されるプロジェクトテンプレートのegg-info/paster_plugins.txt に、"mycms" と記述する。
なお、paste のコマンド拡張には、
- paste.paster_command: プロジェクトの中で実行できるコマンド
- paste.global_paster_command: パッケージを入れさえすれば、どこでも使えるコマンド
- paste.paster_create_template: プロジェクト作成時に、骨組を自動生成するためのコマンド
$ paster my-command --my-option my-target
paster の第1引数にコマンド名を指定し、コマンドに渡したい引数を続けます。
詳しくは、PasteScriptの開発者用マニュアルを参照してください。これで、オリジナルフレームワークに、オリジナルのコマンドを追加できるようになります。
追記: aodag さんがmodel生成コマンドを実装する例を書いています。
paster_plugins.txt は、プロジェクトの骨組みを作るクラスの中で、以下のように指定します。
class TriaxCMSTemplate(Template):
_template_dir = 'project_templates/default_project'
summary = 'Hoge application template'
egg_plugins = ['Hoge', 'Pylons', 'WebHelpers']