boots-app 0.1.0.3 → 0.1.0.5
raw patch · 6 files changed
+33/−22 lines, 6 filesdep ~salakdep ~salak-yamlPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: salak, salak-yaml
API changes (from Hackage documentation)
- Boots.Factory.Logger: instance GHC.Base.Monad m => Salak.Internal.Prop.FromProp m Control.Monad.Logger.LogLevel
- Boots.Factory.Salak: instance Boots.Factory.Salak.HasSalak Salak.Internal.Source.SourcePack
+ Boots.Factory.Application: getRand :: (IsString a, HasApp cxt env, MonadIO m) => AppT env m a
+ Boots.Factory.Logger: instance Salak.Internal.Prop.FromProp m Control.Monad.Logger.LogLevel
+ Boots.Factory.Salak: instance Boots.Factory.Salak.HasSalak Salak.Salak
- Boots.Factory.Application: buildRandom :: forall cxt env a m. (IsString a, MonadIO m, HasApp cxt env) => Proxy cxt -> Factory m env a
+ Boots.Factory.Application: buildRandom :: (IsString a, MonadIO m, HasApp cxt env) => Factory m env a
- Boots.Factory.Application: class HasApp cxt env
+ Boots.Factory.Application: class HasApp cxt env | env -> cxt
- Boots.Factory.Salak: askSalak :: MonadSalak m => m SourcePack
+ Boots.Factory.Salak: askSalak :: HasSalak env => Lens' env Salak
- Boots.Factory.Salak: askSourcePack :: HasSalak env => Lens' env SourcePack
+ Boots.Factory.Salak: askSourcePack :: MonadSalak m => m SourcePack
- Boots.Factory.Vault: class HasVault cxt env
+ Boots.Factory.Vault: class HasVault cxt env | env -> cxt
Files
- boots-app.cabal +7/−5
- src/Boots.hs +0/−0
- src/Boots/Factory/Application.hs +18/−9
- src/Boots/Factory/Logger.hs +1/−1
- src/Boots/Factory/Salak.hs +6/−6
- src/Boots/Factory/Vault.hs +1/−1
boots-app.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: boots-app-version: 0.1.0.3+version: 0.1.0.5 license: MIT license-file: LICENSE copyright: 2019 Daniel YU@@ -30,6 +30,7 @@ default-extensions: FlexibleInstances MultiParamTypeClasses GeneralizedNewtypeDeriving OverloadedStrings RecordWildCards FlexibleContexts RankNTypes ScopedTypeVariables+ FunctionalDependencies ConstraintKinds ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures build-depends: base >=4.10 && <5,@@ -41,8 +42,8 @@ microlens >=0.4.10 && <0.5, monad-logger >=0.3.30 && <0.4, mtl >=2.2.2 && <2.3,- salak >=0.3.3.1 && <0.4,- salak-yaml >=0.3.3 && <0.4,+ salak >=0.3.3.2 && <0.4,+ salak-yaml >=0.3.3.2 && <0.4, splitmix >=0.0.3 && <0.1, text >=1.2.3.1 && <1.3, unliftio-core >=0.1.2.0 && <0.2,@@ -65,6 +66,7 @@ default-extensions: FlexibleInstances MultiParamTypeClasses GeneralizedNewtypeDeriving OverloadedStrings RecordWildCards FlexibleContexts RankNTypes ScopedTypeVariables+ FunctionalDependencies ConstraintKinds ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures build-depends: base >=4.10 && <5,@@ -77,8 +79,8 @@ microlens >=0.4.10 && <0.5, monad-logger >=0.3.30 && <0.4, mtl >=2.2.2 && <2.3,- salak >=0.3.3.1 && <0.4,- salak-yaml >=0.3.3 && <0.4,+ salak >=0.3.3.2 && <0.4,+ salak-yaml >=0.3.3.2 && <0.4, splitmix >=0.0.3 && <0.1, text >=1.2.3.1 && <1.3, unliftio-core >=0.1.2.0 && <0.2,
src/Boots.hs view
src/Boots/Factory/Application.hs view
@@ -4,15 +4,16 @@ , buildApp , rand64 , buildRandom+ , getRand ) where +import Boots.App.Internal import Boots.Factory import Boots.Factory.Logger import Boots.Factory.Salak import Boots.Factory.Vault import Control.Concurrent.MVar import Data.Maybe-import Data.Proxy import Data.String import Data.Text (Text) import Data.Version (Version)@@ -23,14 +24,14 @@ import Salak import System.Random.SplitMix -class HasApp cxt env where+class HasApp cxt env | env -> cxt where askApp :: Lens' env (AppEnv cxt) instance HasApp cxt (AppEnv cxt) where askApp = id instance HasSalak (AppEnv cxt) where- askSourcePack = lens configure (\x y -> x {configure = y})+ askSalak = lens configure (\x y -> x {configure = y}) instance HasLogger (AppEnv cxt) where askLogger = lens logF (\x y -> x {logF = y})@@ -53,9 +54,9 @@ configure <- buildSalak confName within configure $ do name <- fromMaybe (fromString confName) <$> require "application.name"- randSeed <- offer $ liftIO $ initSMGen >>= newMVar- instanceId <- offer $ liftIO $ hex64 <$> random64 randSeed- vaultF <- liftIO $ newVaultRef+ randSeed <- liftIO $ initSMGen >>= newMVar+ instanceId <- liftIO $ hex32 <$> random64 randSeed+ vaultF <- liftIO newVaultRef logF <- buildLogger vaultF (name <> "," <> instanceId) return AppEnv{..} @@ -67,10 +68,18 @@ hex64 :: IsString a => Word64 -> a hex64 i = fromString $ let x = showHex i "" in replicate (16 - length x) '0' ++ x +hex32 :: IsString a => Word64 -> a+hex32 i = fromString $ let x = showHex i "" in drop 8 $ replicate (16 - length x) '0' ++ x+ rand64 :: (IsString a, MonadIO m) => MVar SMGen -> m a rand64 = liftIO . fmap hex64 . random64 -buildRandom :: forall cxt env a m. (IsString a, MonadIO m, HasApp cxt env) => Proxy cxt -> Factory m env a-buildRandom _ = do- (AppEnv{..} :: AppEnv cxt) <- asks (view askApp)+getRand :: (IsString a, HasApp cxt env, MonadIO m) => AppT env m a+getRand = do+ AppEnv{..} <- asks (view askApp)+ lift $ rand64 randSeed++buildRandom :: (IsString a, MonadIO m, HasApp cxt env) => Factory m env a+buildRandom = do+ AppEnv{..} <- asks (view askApp) offer $ rand64 randSeed
src/Boots/Factory/Logger.hs view
@@ -57,7 +57,7 @@ instance (MonadIO m, HasLogger env) => MonadLoggerIO (AppT env m) where askLoggerIO = logfunc <$> asks (view askLogger) -instance Monad m => FromProp m LogLevel where+instance FromProp m LogLevel where fromProp = readEnum (fromEnumProp.toLower) where fromEnumProp "debug" = Right LevelDebug
src/Boots/Factory/Salak.hs view
@@ -13,16 +13,16 @@ import Salak.Yaml class HasSalak env where- askSourcePack :: Lens' env SourcePack+ askSalak :: Lens' env Salak -instance HasSalak SourcePack where- askSourcePack = id+instance HasSalak Salak where+ askSalak = id instance (HasSalak env, Monad m) => MonadSalak (Factory m env) where- askSalak = asks (view askSourcePack)+ askSourcePack = asks (view askSalak) instance (HasSalak env, Monad m) => MonadSalak (AppT env m) where- askSalak = asks (view askSourcePack)+ askSourcePack = asks (view askSalak) buildSalak :: (MonadIO m, MonadCatch m) => String -> Factory m () Salak-buildSalak name = offer $ runSalakWithYaml name askSalak+buildSalak name = offer $ runSalakWithYaml name askSourcePack
src/Boots/Factory/Vault.hs view
@@ -12,7 +12,7 @@ newVaultRef :: IO (VaultRef env) newVaultRef = newMVar $ const id -class HasVault cxt env where+class HasVault cxt env | env -> cxt where askVault :: Lens' env (VaultRef cxt) instance HasVault cxt (VaultRef cxt) where