2017-09-17 2 views
0

Gibt es trotzdem, vermutlich mit dem Cabal Paket, um eine Liste von PackageDesciption s in der aktuellen lokalen Datenbank zu erhalten?Abrufen einer Liste von `PackageDescriptions` aus der lokalen Datenbank

+0

Gibt es etwas unklar in meiner Antwort, oder benötigen Sie eine "Haskell" -Lösung statt Shell Cruft – epsilonhalbe

+0

Ich würde eine Haskell bevorzugen andere Lösung als Shell Cruft. Aber die Shell Cruft hilft, ich Ich werde in die Quelle von "ghc-pkg" schauen und sehen, wie es funktioniert. – Clinton

Antwort

2

Ich weiß nicht, ob es ein „eingebauter“ -Weg ist, dies zu tun, aber ich habe verwendet, um diesen

ghc-pkg list | grep -v "\(^/\|^$\|(\)" | xargs cabal info | grep "\(^\*\|License\)" 

„Lizenz“ Informationen für alle installierten Pakete zu extrahieren.

  1. Wenn Sie stack oder cabal-sandbox - der erste Befehl entweder durch stack exec -- ghc-pkg list oder cabal sandbox hc-pkg list ersetzt werden muss.
  2. der (ersten) regex entfernt die Pfad-Linien wie /opt/ghc/8.0.2/lib/ghc-8.0.2/package.conf.d, beginnend leere Linien und Linien mit ( - irgendwie die farbigen Linien, die durch ghc-pkg wie ghc-8.0.2 mit ( beginnend in meinem Terminal am Ende erzeugt wird, wenn greppen.
  3. „Karte Kabale Info über alle Pakete“
  4. [optional] die Paketinformationen für das Paket zu extrahieren selbst (beginnend mit * und das License Feld.

Ich hoffe, das ist das, was Sie suchen. Ein anderer Weg, denke ich, wäre ein Haskell-Programm zu schreiben und Cabal als eine Bibliothek zu verwenden.

Verwandte Themen