2011-12-07 14 views
5

新しいルビープロジェクトを好きなように設定するための.thorスクリプトを作成しました。私はThor :: Actions directoryコマンドを使用して、テンプレートディレクトリ構造からアプリケーションを完全にビルドします。これは、heredocsでインラインで定義するのとは異なります。Thorがシステムにインストールされているファイルのテンプレートを見つける方法を教えてください。

rubynu.thor 
template/ 
    bin/ 
    lib/ 
    %app_name%.rb.tt 
    %app_name% 
    README.markdown 
    .gitignore 
    ... 

これは本当に素晴らしい作品、と私は簡単に私の好みの変化に応じてテンプレートの個々の部分を視覚化し、変更することができます:スクリプトディレクトリは次のようになります。

しかし.thorファイルがthor install rubynu.thorを使ってインストールされると、テンプレートディレクトリを見つけるには良い方法を見つけられません。インストールでは.thorファイルのコピーが~/.thorに貼り付けられますが、template/ディレクトリは無視されるため、テンプレートは検出されません。

source_rootパスをハードコードしたり、テンプレートディレクトリを手動で~/.thorにコピーしたくないです。 .thorファイルとともにテンプレートのインストールを処理するものがありますか?彼らがインストールされたとき一緒にパッケージ化することができれば素晴らしいだろう。

もしそうでない場合、これを回避する最も良い方法は何ですか?確かにテンプレートファイルを使用するどこかにシステムがインストールされています。どうやってやったの?私はthor installをバイパスして、これを宝石として提供することができます(残念だと思われるかもしれませんが)。または、弾丸を噛んで、すべてのテンプレート定義を巨大な.thorファイルにインラインで張ってください。

class Rubynu < Thor::Group 
    include Thor::Actions 

    argument :app_name 

    def self.source_root 
    File.dirname(__FILE__) 
    end 

    def apply_directory_template 
    directory 'template', app_name 
    end 
end 

ありがとう:参考

は、ここで私が使用しているシンプルな.thorファイルです!

答えて

6

あなたは、このようなあなたの.thorファイルに設定した場合:

<my_thor_commands>/ 
    templates/ 
    bin/ 
    lib/ 
    ... 
    main.thor 

thor install <my_thor_command>main.thorと呼ばれるファイルを探して、それと<my_thor_command>で何かをインストールしますが。それがインストールされていたとして<my_thor_command>にあなたのパスを与えるであろう

def self.source_root 
    File.dirname(__FILE__) 
end 

:その後、あなたが頼ることができます。

+0

これはまさに私が聴きたいと思っていたものです。それは完璧に動作します、ありがとう男! – Mitch

関連する問題