2016-05-14 2 views
1

Я пытаюсь настроить конфигурацию cabal так, чтобы она могла генерировать документацию в форме, которую я могу просматривать локально или удаленно. Поэтому одним из требований является создание правильной формы html, то есть относительного пути.генерировать документацию с относительными путями

Я искал вокруг, но кажется, что существует слишком много комбинаций вариантов, поэтому я думаю, что лучше спросить здесь и посмотреть, знает ли кто-нибудь.

мой текущий конфиг:

documentation: True 

другие варианты не имеют никакого отношения. и компилятор генерирует ссылки, подобные этому:

file:///home/hu/.cabal/share/doc/x86_64-linux-ghc-7.10.3/lens-4.14/html/Control-Lens.html 

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

lens-4.14/html/Control-Lens.html 

таким образом, что в удаленном браузере, я могу увидеть ссылку как:

http://linux/ghc-doc/lens-4.14/html/Control-Lens.html 

надеждой, что имеет смысл.

Кто-нибудь знает, какие параметры мне нужно установить, чтобы включить это?

ответ

0

Я не могу найти решение, поэтому в итоге я написал свой собственный скрипт cgi, который поможет мне сделать преобразование. вот суть:

https://gist.github.com/HuStmpHrrr/b7de3c49f77a925dc6cf85da16a1d231

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

также мы должны настроить сервер HTTP (в моем случае, это apache2):

  1. включить CGI

    LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so

  2. конфигурации вашего Apache для запуска CGI:

    ScriptAlias /cgis/ $somepath/cgis/ 
    <Directory "$somepath/cgis"> 
        AllowOverride None 
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
        Require all granted 
    </Directory> 
    
  3. и поместите там файл cgi. он должен уметь делать трюк.

1

Один из вариантов заключается в использовании stack - он создает HTML-документы с относительными ссылками, как вы хотите.

Для каждого пакета, просто запустите:

stack build --haddock <package-name> 

или

stack --resolver ... build --haddock <package-name> 

использовать определенный распознаватель. Затем посмотрите $HOME/.stack/snapshots/<arch>/<resolver>/<ghc-version>/doc/

Примечание - <package-name> - это просто название пакета - не включая версию.

Предостережение заключается в том, что стек не будет перестраивать пакеты - возможно, для этого есть флаг, но вы всегда можете удалить каталог снимков перед запуском.

+0

будет ли это генерировать централизованную страницу index.html? – HuStmpHrrr

0

Может быть, вы хотите: http://documentup.com/feuerbach/standalone-haddock

Цитата: Он генерирует документацию ... с соответствующими ссылками:

  • ссылки на идентификаторы внутри этого пакета набор относительны
  • ссылки на идентификаторы из внешних пакетов приводят к взлому
+0

Одной из моих проблем является централизованная страница index.html. Это было бы очень полезно. Я не использовал этот инструмент. будет ли он поддерживать этот индексный файл? – HuStmpHrrr