2015-09-22 19 views
20

Ich habe meinen Code im Haddock-Stil kommentiert und würde gerne durchsuchbare Dokumentation erstellen. Da ich auch Stack verwende, möchte ich die Dokumentationsgeneration in den Workflow integrieren. Ich konnte jedoch noch nichts Nützliches generieren.Erzeugen von Dokumentation für meinen eigenen Code mit Haddock und Stack

ich laufen kann

stack haddock 

und es wird erzeugen Dokumentation im Stil ich will (zu tief in ~/.stack/ zu finden), aber es scheint nur Dokumentation ich davon ab, für die Pakete zu erzeugen, anstatt für mein eigener Code.

Als ich

stack haddock --help 

laufen habe ich den Eindruck, dass ich das zusätzliche Argument verwenden können --haddock Dokumentation für mein eigenes Projekt zu generieren, und --no-haddock-deps die Dokumentation für meine Abhängigkeiten auszulassen. Wenn ich jedoch

stack haddock --haddock --no-haddock-deps 

läuft scheint nichts passieren. Wenn ich zuerst stack clean alles meinen Code neu kompiliere, aber keine Ausgabe generiert wird, scheint in irgendeiner Weise auf Dokumentation zu beziehen.

Als Zwischenlösung ich auch selbst versucht haben, laufen Haddock, das heißt

haddock my-source.hs 

aber dann bekomme ich einen Fehler, dass es nicht ein Modul die Datei hängt davon ab, (die lokal durch Stapel installiert ist) finden kann. Dies gibt mir den Eindruck, dass die Dokumentationsgenerierung irgendwie durch den Stack gehen muss. Ich habe gesucht, aber nicht wirklich irgendwelche Erklärungen im Zusammenhang mit der Konfiguration meiner .cabal und stack.yaml Dateien für die Dokumentation gefunden.

TL; DR

Wie kann ich Stack und Haddock Dokumentation für den Code in meinem eigenen Paket zu generieren?

+2

Ist Ihr Projekt eine ausführbare Datei oder eine Bibliothek? Ich denke Stack generiert nur Dokumente für Bibliotheken (für die es den Pfad zu den Dokumenten nach dem Befehl ausgibt, oder Sie können es aus dem 'Stack Pfad' sehen), siehe hier: https: // github.com/commercialhaskell/stack/issues/729 (einschließlich der vorgeschlagenen Problemumgehung zum Erstellen von Dokumenten für ausführbare Dateien mit "cabal haddock"). –

+0

@ RüdigerHanke: Großartig, danke. Mit diesem Link habe ich es ausgearbeitet, in der Tat mit "cabal Schellfisch" und der verknüpften vorgeschlagenen Problemumgehung. Wenn Sie es als Antwort ausschreiben möchten, akzeptiere ich es, wenn nicht, kann ich die Lösung selbst aufschreiben. (Mein Projekt ist eine ausführbare Datei.) –

Antwort

12

Nach this ticket auf dem Stack Issue Tracker kann Stack derzeit nur Dokumentation für Bibliotheken erstellen, aber keine ausführbaren Dateien.

Cabal kann so konfiguriert werden, um mit diesem Befehl mit den Stack-Datenbanken zu arbeiten:

cabal configure --package-db=clear --package-db=global --package-db=$(stack path --snapshot-pkg-db) --package-db=$(stack path --local-pkg-db) 

nach dem Sie cabal haddock --executables ausführen können, die Dokumentation zu erzeugen.

Übrigens ist stack haddock nur eine Abkürzung für stack build --haddock, so dass es keine Notwendigkeit gibt, stack haddock --haddock zu schreiben.

+0

Ich verstehe das SO-Editier-System noch nicht wirklich:/Vielleicht werde ich verrückt, aber ich war ziemlich sicher, als ich die Bearbeitung vorgeschlagen habe, war der Befehl 'cabal configure' noch nicht in Ihrem Post . Jetzt sagt die Editierhistorie, dass die Änderung bedeutungslos ist. Trotzdem danke für die Antwort und fühle mich frei, die Bearbeitung zurück zu rollen ... –

+2

@SamvanHerwaarden Ich glaube für ein paar Minuten, nachdem eine Antwort zuerst veröffentlicht wurde, kann der Autor es bearbeiten, ohne dass es in der Geschichte auftaucht. Vielleicht ist das hier passiert. –

+0

Das Ausführen des Befehls 'cabal configure ...' gibt einen Fehler von 'cabal: ghc-pkg dump failed' für mich zurück. –