簡體   English   中英

如何使Thor查找系統安裝的.thor文件的模板?

[英]How to make Thor find templates for system installed .thor files?

我已經創建了一個.thor腳本,用於以我喜歡的方式設置一個新的ruby項目。 我正在使用Thor :: Actions directory命令完全從模板目錄結構構建應用程序,而不是與heredocs內聯定義它們。 腳本目錄如下所示:

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

這確實非常有效,並且讓我可以根據自己的口味輕松地可視化和更改模板的各個部分。

但是,一旦使用thor install rubynu.thor系統安裝了.thor文件,我就無法找到一種找到模板目錄的好方法。 Install將.thor文件的副本.thor~/.thor但忽略了template/目錄,因此不再找到模板。

我不想硬編碼source_root路徑或手動將模板目錄中的內容復制到~/.thor thor是否有內置的東西可以處理安裝模板以及.thor文件? 如果可以在安裝時將它們打包在一起,那就太好了。

如果不是,解決此問題的最佳方法是什么? 當然,在某些使用模板文件的任務中安裝了系統。 你怎么樣 我想我可以繞開thor install並將其作為gem提供(盡管這似乎.thor過頭),或者咬緊牙關,並將所有模板定義內聯在一個巨大的.thor文件中(不太高興以后再對結構進行更改)。

作為參考,這是我正在使用的簡單.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文件:

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

thor install <my_thor_command>將查找一個名為main.thor的文件,然后將其及其他任何文件安裝在<my_thor_command> 之后,您可以依靠:

def self.source_root
  File.dirname(__FILE__)
end

這將為您提供<my_thor_command>安裝路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM