Включение дополнительных каталогов с помощью Keter

У меня есть сайт Yesod, и я создал обработчик для обработки загрузок и обеспечения соблюдения ограничений. В моем каталоге проекта Yesod есть подкаталог с именем downloads, и он содержит файлы, которые я хочу, чтобы пользователь мог загрузить, если они вошли в систему. Обработчик отлично работает в моих блоках разработки и подготовки, но ломается, когда я перехожу к рабочей среде. Я отследил проблему до того, что yesod keter не архивирует файлы при сборке пакета.

Как мне убедить keter включить каталог?


person nomen    schedule 20.10.2015    source источник
comment
Я забыл точные детали, но я думаю, что функциональность yesod keter покрывается другим пакетом. Может быть, у этого есть больше вариантов конфигурации?   -  person MaxGabriel    schedule 22.10.2015


Ответы (1)


Все, что делает команда yesod keter, это создает сжатый архивный файл .tar.gz с расширением .keter, содержащий следующие подкаталоги:

  • config: точная копия одноименного каталога в исходном дереве.
  • dist: содержит подкаталог bin, содержащий двоичный файл вашего приложения.
  • static: точная копия одноименного каталога в исходном дереве.

Обратите внимание, что путь к двоичному файлу вашего приложения задается в config/keter.yml с помощью параметра exec, а путь к вашим статическим файлам задается с помощью параметра root. Точный набор файлов, включенных командой yesod keter, указан в findFiles, если вы хотите взглянуть на исходный код.

Если вы хотите настроить содержимое вашего файла .keter, вероятно, проще всего будет написать сценарий оболочки для создания архива. С помощью этого скрипта вы можете добавлять в архив произвольные дополнительные каталоги.

Минимальный сценарий bash, который вам понадобится для эмуляции поведения yesod keter, выглядит следующим образом:

#!/bin/bash
tar cvf myapp.keter config/ dist/bin/ static/

Вы можете настроить это так, как хотите, чтобы контент был правильным. Добавление download/ в конец этой командной строки должно помочь.

person Richard Cook    schedule 21.10.2015