on master help sign in
Fix obelisk incompatibilities with ghc 8.4

- Using MonadLog instead of Cli for deriving instance - Rewriting to use Distribution.PackageDescription.Parsec instead of removed Distribution.PackageDescription.Parse - Deriving semigroups where appropriate

commit6619da042a88cdd97bd9a5cd79c2ac8ad99f0d4e authorMatthew Bauer <mjbauer95@gmail.com> dateMon 2 Jul 2018, 14:44 (8 years ago) parentddb5267
4 files changed+20−12
lib/cliapp/src/Obelisk/CliApp.hs+1 lib/command/src/Obelisk/App.hs+5−2 lib/command/src/Obelisk/Command/Run.hs+13−9 lib/command/src/Obelisk/Command/Upgrade.hs+1−1
lib/cliapp/src/Obelisk/CliApp.hs+1
@@ -12,6 +12,7 @@ module Obelisk.CliApp
1212 , CliConfig
1313 , HasCliConfig
1414 , getCliConfig
15+ , Output
1516
1617 -- .Spinner
1718 , withSpinner
lib/command/src/Obelisk/App.hs+5−2
@@ -11,8 +11,9 @@ import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
1111import Control.Monad.Reader (MonadIO, ReaderT (..), ask, runReaderT)
1212import Control.Monad.Trans.Class (lift)
1313import System.Directory (XdgDirectory (XdgData), getXdgDirectory)
14+import Control.Monad.Log (MonadLog)
1415
15−import Obelisk.CliApp (Cli, CliConfig, CliT, HasCliConfig, getCliConfig, runCli)
16+import Obelisk.CliApp (CliConfig, CliT, HasCliConfig, getCliConfig, runCli, Output)
1617
1718newtype Obelisk = Obelisk
1819 { _obelisk_cliConfig :: CliConfig
@@ -25,6 +26,8 @@ newtype ObeliskT m a = ObeliskT
2526 ( Functor, Applicative, Monad, MonadIO, MonadThrow, MonadCatch, MonadMask
2627 , HasObelisk, HasCliConfig)
2728
29+deriving instance Monad m => MonadLog Output (ObeliskT m)
30+
2831class HasObelisk m where
2932 getObelisk :: m Obelisk
3033
@@ -41,7 +44,7 @@ runObelisk c =
4144 . unObeliskT
4245
4346type MonadObelisk m =
44− ( Cli m
47+ ( MonadLog Output m
4548 , HasCliConfig m
4649 , HasObelisk m
4750 , MonadIO m
lib/command/src/Obelisk/Command/Run.hs+13−9
@@ -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
lib/command/src/Obelisk/Command/Upgrade.hs+1−1
@@ -32,7 +32,7 @@ import Obelisk.Command.Upgrade.Hash
3232import Obelisk.Migration
3333
3434newtype HandOffAction = HandoffAction Any
35− deriving (Monoid, Ord, Eq, Show)
35+ deriving (Monoid, Semigroup, Ord, Eq, Show)
3636
3737instance Action HandOffAction where
3838 parseEdgeMeta = HandoffAction . Any . (== "True")