From 0948d8545d916b13784b4cb6463352c060d839a2 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 9 Jun 2015 23:11:46 +0200 Subject: more verbose output --- src/Trivmix.hs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'src/Trivmix.hs') diff --git a/src/Trivmix.hs b/src/Trivmix.hs index 7a786f3..4af2165 100644 --- a/src/Trivmix.hs +++ b/src/Trivmix.hs @@ -156,10 +156,11 @@ onStateFile file initial action = do let directory = takeDirectory file dirExists <- doesDirectoryExist directory exists <- doesFileExist file - createDirectoryIfMissing True directory let acquireFile = case exists of True -> return () - False -> createFile file fileMode >>= closeFd >> writeFile file initial + False -> do + putStrLn $ "Creating ‘" ++ file ++ "’ (file)" + createFile file fileMode >>= closeFd >> writeFile file initial fileMode = foldl unionFileModes nullFileMode [ ownerReadMode , ownerWriteMode , groupReadMode @@ -167,20 +168,34 @@ onStateFile file initial action = do ] releaseFile = case exists of True -> return () - False -> removeFile file + False -> do + putStrLn $ "Removing ‘" ++ file ++ "’ (file)" + removeFile file + acquireDir = case dirExists of + True -> return () + False -> do + putStrLn $ "Creating ‘" ++ directory ++ "’ (dir" + createDirectoryIfMissing True directory releaseDir = case dirExists of True -> return () - False -> removeDirectory directory - acquire = acquireFile + False -> do + putStrLn $ "Removing ‘" ++ directory ++ "’ (dir)" + removeDirectory directory + acquire = acquireDir >> acquireFile release = releaseFile >> releaseDir bracket_ acquire release action readLevel :: Chan Level -> MVar Level -> FilePath -> IO () readLevel levelChan current file = catch action handler where - action = readFile file >>= readIO . stripSpace >>= writeChan levelChan + action = do + level <- readFile file >>= readIO . stripSpace + writeChan levelChan level + putStrLn $ "Detected new level: " ++ (show level) handler e = if isUserError e - then readMVar current >>= writeLevel file + then do + putStrLn $ "Could not parse new level from ‘" ++ file ++ "’ - overwriting." + readMVar current >>= writeLevel file else throw e stripSpace = reverse . stripSpace' . reverse . stripSpace' stripSpace' [] = [] @@ -189,4 +204,6 @@ readLevel levelChan current file = catch action handler else l writeLevel :: FilePath -> Level -> IO () -writeLevel file level = writeFile file (show level ++ "\n") +writeLevel file level = do + putStrLn $ "Writing out level ‘" ++ (show level) ++ "’ to ‘" ++ file ++ "’" + writeFile file (show level ++ "\n") -- cgit v1.2.3