module Mcmc.Environment
( Environment (..),
initializeEnvironment,
)
where
import Data.Time.Clock
import Mcmc.Settings
import System.IO
data Environment = Environment
{ Environment -> Settings
settings :: Settings,
Environment -> Maybe Handle
logHandle :: Maybe Handle,
Environment -> UTCTime
startingTime :: UTCTime
}
deriving (Environment -> Environment -> Bool
(Environment -> Environment -> Bool)
-> (Environment -> Environment -> Bool) -> Eq Environment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Environment -> Environment -> Bool
$c/= :: Environment -> Environment -> Bool
== :: Environment -> Environment -> Bool
$c== :: Environment -> Environment -> Bool
Eq, Int -> Environment -> ShowS
[Environment] -> ShowS
Environment -> String
(Int -> Environment -> ShowS)
-> (Environment -> String)
-> ([Environment] -> ShowS)
-> Show Environment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Environment] -> ShowS
$cshowList :: [Environment] -> ShowS
show :: Environment -> String
$cshow :: Environment -> String
showsPrec :: Int -> Environment -> ShowS
$cshowsPrec :: Int -> Environment -> ShowS
Show)
initializeEnvironment ::
Settings ->
IO Environment
initializeEnvironment :: Settings -> IO Environment
initializeEnvironment Settings
s = do
UTCTime
t <- IO UTCTime
getCurrentTime
Maybe Handle
mh <- case Settings -> Verbosity
sVerbosity Settings
s of
Verbosity
Quiet -> Maybe Handle -> IO (Maybe Handle)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Handle
forall a. Maybe a
Nothing
Verbosity
_ -> do
Handle
h <- ExecutionMode -> String -> IO Handle
openWithExecutionMode ExecutionMode
em String
fn
Maybe Handle -> IO (Maybe Handle)
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Handle -> IO (Maybe Handle))
-> Maybe Handle -> IO (Maybe Handle)
forall a b. (a -> b) -> a -> b
$ Handle -> Maybe Handle
forall a. a -> Maybe a
Just Handle
h
Environment -> IO Environment
forall (m :: * -> *) a. Monad m => a -> m a
return (Environment -> IO Environment) -> Environment -> IO Environment
forall a b. (a -> b) -> a -> b
$ Settings -> Maybe Handle -> UTCTime -> Environment
Environment Settings
s Maybe Handle
mh UTCTime
t
where
fn :: String
fn = AnalysisName -> String
fromAnalysisName (Settings -> AnalysisName
sAnalysisName Settings
s) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
".log"
em :: ExecutionMode
em = Settings -> ExecutionMode
sExecutionMode Settings
s