module Main(main) where import CAStore.Command (runCommand) import CAStore.Config (finalConfig) import CAStore.Program (Program, runProgram, getCommand) import CAStore.Program.Storage (initialise) import Control.Monad.IO.Class (liftIO) main :: IO () main = finalConfig >>= flip runProgram defaultProgram defaultProgram :: Program () defaultProgram = do initialise getCommand >>= \case Nothing -> liftIO $ putStrLn "ERROR: Invalid command" Just cmd -> runCommand cmd