diff --git a/lib/Hikaru/Config.hs b/lib/Hikaru/Config.hs index a26da531fdbcb9de960355108aff55e34ed877cd..78c655d26155ec888009d609a010979622f1adfc 100644 --- a/lib/Hikaru/Config.hs +++ b/lib/Hikaru/Config.hs @@ -26,6 +26,10 @@ module Hikaru.Config , configFromFile , configDefault + -- * Reading Config + , configGetMaybe + , configGetDefault + -- * Secrets , generateSecret ) @@ -38,6 +42,7 @@ where import Data.ByteArray.Encoding import Data.String.Conversions import Data.Text hiding (map) + import Hikaru.Types import System.Environment @@ -102,6 +107,20 @@ where ] + -- | + -- Try to obtain value of a configuration key. + -- + configGetMaybe :: (Param a) => Text -> Config -> Maybe a + configGetMaybe name cfg = fromParam =<< Map.lookup name cfg + + + -- | + -- Obtain value of a configuration key or the provided default. + -- + configGetDefault :: (Param a) => Text -> a -> Config -> a + configGetDefault name value = fromMaybe value . configGetMaybe name + + -- | -- Generate a random base64-encoded secret of given length -- (in decoded bytes).