strictness annotations

This commit is contained in:
Keagan McClelland
2021-09-23 15:24:31 -06:00
parent f8d7f94cc5
commit 61288e6ce9
2 changed files with 27 additions and 24 deletions

View File

@@ -6,6 +6,7 @@
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE BangPatterns #-}
module Lib.External.AppMgr where
@@ -52,7 +53,7 @@ getConfig appmgrPath appPath e@(Extension appId) = fmap decodeUtf8 $ do
getManifest :: (MonadIO m, KnownSymbol a) => FilePath -> FilePath -> Extension a -> S9ErrT m LBS.ByteString
getManifest appmgrPath appPath e@(Extension appId) = do
(ec, bs) <- readProcessInheritStderr (appmgrPath <> "embassy-sdk") ["inspect", "manifest", appPath <> show e] ""
(!ec, !bs) <- readProcessInheritStderr (appmgrPath <> "embassy-sdk") ["inspect", "manifest", appPath <> show e] ""
case ec of
ExitSuccess -> pure bs
ExitFailure n -> throwE $ AppMgrE [i|embassy-sdk inspect manifest #{appId}|] n

View File

@@ -14,19 +14,19 @@ import Data.Aeson
import qualified Data.HashMap.Strict as HM
import qualified Data.List.NonEmpty as NE
import qualified Data.ByteString.Lazy as BS
import Data.Functor.Contravariant ( Contravariant(contramap) )
import Data.String.Interpolate.IsString
-- import Model
import qualified Data.Text as T
import Database.Persist.Postgresql
import qualified GHC.Read ( Read(..) )
import qualified GHC.Show ( Show(..) )
import Lib.Registry
import Lib.Types.Emver
import Orphans.Emver ( )
import System.Directory
import Lib.Registry
-- import Model
import qualified Data.Text as T
import Data.String.Interpolate.IsString
import qualified Data.ByteString.Lazy as BS
import Database.Persist.Postgresql
import Yesod
import Data.Functor.Contravariant ( Contravariant(contramap) )
import qualified GHC.Read ( Read(..) )
import qualified GHC.Show ( Show(..) )
newtype AppIdentifier = AppIdentifier { unAppIdentifier :: Text }
deriving (Eq)
@@ -151,11 +151,12 @@ addFileTimestamp appDir ext service v = do
pure $ Just service { storeAppTimestamp = Just time }
data ServiceDependencyInfo = ServiceDependencyInfo
{ serviceDependencyInfoOptional :: Maybe Text
, serviceDependencyInfoVersion :: VersionRange
{ serviceDependencyInfoOptional :: Maybe Text
, serviceDependencyInfoVersion :: VersionRange
, serviceDependencyInfoDescription :: Maybe Text
, serviceDependencyInfoCritical :: Bool
} deriving (Show)
, serviceDependencyInfoCritical :: Bool
}
deriving Show
instance FromJSON ServiceDependencyInfo where
parseJSON = withObject "service dependency info" $ \o -> do
serviceDependencyInfoOptional <- o .:? "optional"
@@ -185,16 +186,17 @@ instance FromJSON ServiceAlert where
"stop" -> pure STOP
_ -> fail "unknown service alert type"
data ServiceManifest = ServiceManifest
{ serviceManifestId :: AppIdentifier
, serviceManifestTitle :: Text
, serviceManifestVersion :: Version
, serviceManifestDescriptionLong :: Text
, serviceManifestDescriptionShort :: Text
, serviceManifestReleaseNotes :: Text
, serviceManifestIcon :: Maybe Text
, serviceManifestAlerts :: HM.HashMap ServiceAlert (Maybe Text)
, serviceManifestDependencies :: HM.HashMap AppIdentifier ServiceDependencyInfo
} deriving (Show)
{ serviceManifestId :: !AppIdentifier
, serviceManifestTitle :: !Text
, serviceManifestVersion :: !Version
, serviceManifestDescriptionLong :: !Text
, serviceManifestDescriptionShort :: !Text
, serviceManifestReleaseNotes :: !Text
, serviceManifestIcon :: !(Maybe Text)
, serviceManifestAlerts :: !(HM.HashMap ServiceAlert (Maybe Text))
, serviceManifestDependencies :: !(HM.HashMap AppIdentifier ServiceDependencyInfo)
}
deriving Show
instance FromJSON ServiceManifest where
parseJSON = withObject "service manifest" $ \o -> do
serviceManifestId <- o .: "id"