diff options
Diffstat (limited to 'apps/Utils.hs')
-rw-r--r-- | apps/Utils.hs | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/apps/Utils.hs b/apps/Utils.hs deleted file mode 100644 index e34950f..0000000 --- a/apps/Utils.hs +++ /dev/null @@ -1,66 +0,0 @@ -{- - - Copyright 2015 Egor Tensin <Egor.Tensin@gmail.com> - - This file is licensed under the terms of the MIT License. - - See LICENSE.txt for details. --} - -module Utils - ( withPrompt - , withoutPrompt - - , engraveBanner - , wipeBanner - ) where - -import Control.Monad (liftM, void, when) -import Data.Maybe (fromJust, isJust) -import Data.Char (toLower) -import System.IO (hFlush, stdout) -import Text.Printf (printf) - -import Windows.Environment (Profile, profileKeyPath, VarName, VarValue) - -prompt :: String -> IO String -prompt banner = do - putStr banner - hFlush stdout - getLine - -promptYesNo :: String -> IO Bool -promptYesNo banner = do - response <- liftM (map toLower) $ prompt banner - if response `elem` yeses - then return True - else if response `elem` noes - then return False - else promptToContinue - where - yeses = ["y", "yes"] - noes = ["n", "no"] - -promptToContinue :: IO Bool -promptToContinue = promptYesNo "Continue? (y/n) " - -withPrompt :: String -> IO a -> IO Bool -withPrompt banner m = do - putStr banner - hFlush stdout - agreed <- promptToContinue - when agreed $ void m - return agreed - -withoutPrompt :: IO a -> IO Bool -withoutPrompt m = m >> return True - -engraveBanner :: Profile -> VarName -> Maybe VarValue -> VarValue -> String -engraveBanner profile name oldValue newValue = - header ++ values - where - header = printf "Saving variable '%s' to '%s'...\n" name (profileKeyPath profile) - values = if isJust oldValue - then printf "\tOld value: %s\n\tNew value: %s\n" (fromJust oldValue) newValue - else printf "\tValue: %s\n" newValue - -wipeBanner :: Profile -> VarName -> String -wipeBanner profile name = - printf "Deleting variable '%s' from '%s'...\n" name (profileKeyPath profile) |