stan-0.0.0.0: src/Stan/EnvVars.hs
{- |
Copyright: (c) 2020 Kowainik
SPDX-License-Identifier: MPL-2.0
Maintainer: Kowainik <xrom.xkov@gmail.com>
Environment variables for @stan@.
-}
module Stan.EnvVars
( EnvVars (..)
, getEnvVars
, envVarsToText
) where
import System.Environment (lookupEnv)
import Trial (TaggedTrial, Trial (..), fiasco, withTag)
newtype EnvVars = EnvVars
{ envVarsUseDefaultConfigFile :: TaggedTrial Text Bool
}
getEnvVars :: IO EnvVars
getEnvVars = do
envVarsUseDefaultConfigFile <- getEnvVar "STAN_USE_DEFAULT_CONFIG" $ \case
"True" -> pure True
"False" -> pure False
_ -> fiasco "Incorrect value is set for STAN_USE_DEFAULT_CONFIG"
pure EnvVars{..}
where
getEnvVar :: String -> (String -> Trial Text a) -> IO (TaggedTrial Text a)
getEnvVar var act = lookupEnv var <&> \val -> withTag "EnvVar" $ case val of
Nothing -> fiasco $ "No " <> toText var <> " Env Variable is set"
Just s -> act s
envVarsToText :: EnvVars -> Text
envVarsToText EnvVars{..} = case envVarsUseDefaultConfigFile of
Result _ (_, res) -> "STAN_USE_DEFAULT_CONFIG=" <> show res
Fiasco _ -> ""