Как заставить Thor находить шаблоны для установленных системой файлов .thor?

Я создал сценарий .thor для настройки нового проекта ruby именно так, как мне это нравится. Я использую команду Thor :: Actions directory для создания приложения полностью из структуры каталогов шаблонов, а не для их определения в heredocs. Каталог скриптов выглядит примерно так:

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

Это действительно здорово работает и позволяет мне легко визуализировать и изменять отдельные части шаблона по мере того, как мой вкус меняется.

Но я не могу придумать хороший способ заставить Тор найти каталог с шаблоном после того, как файл .thor будет установлен системой с помощью tor install rubynu.thor . Установка вставляет копию файла .thor в ~ / .thor , но игнорирует каталог template / , и поэтому шаблоны больше не обнаруживаются.

Я не хочу жестко кодировать путь source_root или вручную копировать каталог шаблона в ~ / .thor . Есть ли что-то встроенное в Thor, которое обрабатывает установку шаблонов вместе с файлом .thor ? Было бы здорово, если бы их можно было упаковать вместе при установке.

Если нет, то как лучше всего это обойти? Наверняка где-то установлены системные задачи, использующие файлы шаблонов.Как ты это сделал? Я полагаю, я мог бы обойти tor install и предоставить это как драгоценный камень (хотя это кажется излишним), или укусить пулю и вставить все определения шаблонов в гигантский .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

Спасибо!

5
задан Michael Lihs 5 January 2017 в 23:44
поделиться