Load metadata file if it exists
This commit is contained in:
parent
d0807d575a
commit
fdc755ecb0
1 changed files with 13 additions and 2 deletions
|
|
@ -1,27 +1,38 @@
|
|||
module Main where
|
||||
|
||||
import Control.Monad.IO.Class
|
||||
import qualified Data.Text as T
|
||||
import qualified Data.Text.IO as T
|
||||
import Options.Applicative
|
||||
|
||||
import Mima.Format
|
||||
import Mima.MimaRun.Options
|
||||
import Mima.Run
|
||||
import Mima.Vm.Flags
|
||||
import Mima.Vm.Metadata
|
||||
import Mima.Vm.State
|
||||
import Mima.Vm.Storage
|
||||
|
||||
loadMetadataOrEmpty :: FilePath -> Run Metadata
|
||||
loadMetadataOrEmpty path = catch (loadMetadata path) (\error -> do
|
||||
liftIO $ putStrLn $ "Metafile could not be loaded. " ++ T.unpack error
|
||||
pure mempty)
|
||||
|
||||
main :: IO ()
|
||||
main = runOrExit 2 $ do
|
||||
opts <- liftIO $ execParser parserInfo
|
||||
initialState <- loadMimaState $ inputFile opts
|
||||
metadata <- loadMetadataOrEmpty $ metadataFile opts
|
||||
let flags = flagsFromMetadata metadata
|
||||
|
||||
finalState <- liftIO $ case steps opts of
|
||||
Nothing -> do
|
||||
let (finalState, abortReason, stepsMade) = execute mempty initialState
|
||||
let (finalState, abortReason, stepsMade) = execute flags initialState
|
||||
putStrLn $ "Stopped after " ++ show stepsMade ++ " steps, reason:"
|
||||
T.putStrLn $ toText abortReason
|
||||
pure finalState
|
||||
Just n -> do
|
||||
let (finalState, mAbortReason, stepsMade) = executeN n mempty initialState
|
||||
let (finalState, mAbortReason, stepsMade) = executeN n flags initialState
|
||||
putStrLn $ "Stopped after " ++ show stepsMade ++ " steps, reason:"
|
||||
case mAbortReason of
|
||||
Nothing -> putStrLn "Ran out of steps"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue