Извличане на имена на модули, включени в пакет cabal, от анализ на .cabal файла

Чудя се дали има начин да се извлекат имената на модулите на cabal пакет от анализиране на .cabal файловете.

Опитах се да използвам parsePackageDescription от Distribution.PackageDescription.Parse, но например когато се опитвам да анализирам .cabal на самия пакет Cabal (http://hackage.haskell.org/package/Cabal-1.18.1.2/Cabal.cabal) библиотечната стойност на PackageDescription е нищо, въпреки че има библиотека раздел с експонирани модули и other.modules във файла .cabal.

Това предвидено ли е или правя нещо нередно? Освен това, ако е предвидено, някой знае ли друг прост начин за извличане на имената на модулите?

Благодаря предварително!


person majstroll    schedule 01.04.2014    source източник
comment
Коя версия на Cabal използвате? Току-що опитах и ​​нямах проблеми с анализа на собствения .cabal файл на Cabal с помощта на Cabal 1.18.1.2, включително библиотечния раздел. Можете ли да ни разкажете какво точно сте направили?   -  person fjh    schedule 02.04.2014
comment
Използвам ghc 7.6.3 с Cabal 1.18.1. Прочетох файла Cabal и след това стартирам parsePackageDescription върху резултата от четенето. Анализът работи донякъде добре, тъй като се попълват няколко полета като автор и описание. Разделът на библиотеката обаче анализира до Нищо за мен.   -  person majstroll    schedule 02.04.2014
comment
А, мисля, че знам какъв е проблемът. Когато анализирате пакет с помощта на parsePackageDescription, получавате стойност от тип GenericPackageDescription. За да получите окончателното описание на пакета, трябва да стартирате функцията flattenPackageDescription от Distribution.PackageDescription.Configuration. Това окончателно описание на пакета трябва да съдържа информацията за библиотеката.   -  person fjh    schedule 03.04.2014
comment
Благодаря! Това изглежда върши работа. Мислех, че трябва да получа същия резултат чрез извличане на PackageDescription стойността на GenericPackageDescription и не знаех за функцията flattenPackageDescription.   -  person majstroll    schedule 03.04.2014