2016-05-14 28 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

報價:它生成的文件...用正確的鏈接:

  • 鏈接標識這個包裏面設置是相對
  • 鏈接來自外部的包標識符導致hackage
+0

我的一個擔心是集中式的'index.html'頁面。這會非常有幫助。我沒有使用這個工具。它會維護這個索引文件嗎? – HuStmpHrrr