@@ -15,16 +15,18 @@ import Data.List.NonEmpty as NE
1515import Data.Maybe
1616import Data.Monoid
1717import qualified Data.Text as T
18−import Distribution.PackageDescription.Parse (ParseResult (..), parseGenericPackageDescription)
18+import Distribution.PackageDescription.Parsec (ParseResult (..), parseGenericPackageDescription)
19+import Distribution.Parsec.ParseResult (runParseResult)
1920import Distribution.Types.BuildInfo
2021import Distribution.Types.CondTree
2122import Distribution.Types.GenericPackageDescription
2223import Distribution.Types.Library
23−import Distribution.Utils.Generic (withUTF8FileContents)
24+import Distribution.Utils.Generic (withUTF8FileContents, toUTF8BS)
2425import Network.Socket
2526import System.Directory
2627import System.FilePath
2728import System.IO.Temp (withSystemTempDirectory)
29+import Data.ByteString (ByteString)
2830
2931import Obelisk.App (MonadObelisk, ObeliskT)
3032import Obelisk.CliApp (CliT (..), HasCliConfig, Severity (..), callCommand, failWith, getCliConfig, putLog,
@@ -59,21 +61,23 @@ parseHsSrcDir cabalFp = do
5961 if exists
6062 then do
6163 withUTF8FileContentsM cabalFp $ \cabal -> do
62− case parseGenericPackageDescription cabal of
63− ParseOk warnings gpkg -> do
64− mapM_ (putLog Warning) $ fmap (T.pack . show) warnings
64+ let (warnings, result) = runParseResult $ parseGenericPackageDescription cabal
65+ mapM_ (putLog Warning) $ fmap (T.pack . show) warnings
66+ case result of
67+ Right gpkg -> do
6568 return $ do
6669 (_, lib) <- simplifyCondTree (const $ pure True) <$> condLibrary gpkg
6770 pure $ fromMaybe (pure ".") $ NE.nonEmpty $ hsSourceDirs $ libBuildInfo lib
68− ParseFailed e -> do
69− putLog Error $ T.pack $ "Failed to parse cabal file: " <> show e
71+ Left (_, errors) -> do
72+ putLog Error $ T.pack "Failed to parse cabal file: "
73+ mapM_ (putLog Error) $ fmap (T.pack . show) errors
7074 return Nothing
7175 else return Nothing
7276
73−withUTF8FileContentsM :: (MonadIO m, HasCliConfig m) => FilePath -> (String -> CliT IO a) -> m a
77+withUTF8FileContentsM :: (MonadIO m, HasCliConfig m) => FilePath -> (ByteString -> CliT IO a) -> m a
7478withUTF8FileContentsM fp f = do
7579 c <- getCliConfig
76− liftIO $ withUTF8FileContents fp $ runCli c . f
80+ liftIO $ withUTF8FileContents fp $ runCli c . f . toUTF8BS
7781
7882-- | Create ghci configuration to load the given packages
7983withGhciScript