2017-09-17 3 views
0

Y at-il de toute façon, probablement en utilisant le package Cabal, pour obtenir une liste de PackageDesciption dans la base de données locale actuelle?Obtention d'une liste de `PackageDescriptions` de la base de données locale

+0

Y at-il quelque chose de flou dans ma réponse, ou avez-vous besoin d'une solution de "haskell" au lieu de shell cruft – epsilonhalbe

+0

Je préférerais un Haskell solution autre que la cruauté de la coquille. Je vais creuser dans la source de "ghc-pkg" et voir comment ça marche. – Clinton

Répondre

2

Je ne sais pas s'il y a un -way de le faire « intégré », mais je l'ai utilisé cette

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

pour extraire les informations « licence » pour tous les paquets installés.

  1. Si vous utilisez stack ou cabal-sandbox - la première commande doit être remplacé soit par stack exec -- ghc-pkg list ou cabal sandbox hc-pkg list.
  2. le (premier) regex supprime le chemin des lignes comme /opt/ghc/8.0.2/lib/ghc-8.0.2/package.conf.d, des lignes et des lignes vides commençant par ( - en quelque sorte les lignes colorées produites par ghc-pkg comme ghc-8.0.2 finissent avec à partir ( dans mon terminal lorsque grepper.
  3. « Info carte cabale sur tous les paquets »
  4. [en option] extraire les informations de package pour le paquet lui-même (en commençant par * et le champ License.

J'espère que c'est ce que vous recherchez. Une autre façon, je pense, serait d'écrire un programme de haskell et d'utiliser Cabal comme une bibliothèque