X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Flwn-epub.git;a=blobdiff_plain;f=src%2FConfiguration.hs;h=b7915073e842136724224a76851715b742209c06;hp=5745d095b9e9de204012889e0f55c2bf83180a68;hb=6cb1920fc40d737b5a13fda62a75bf97a69c1ab6;hpb=03360100f3375abab128144b0851d043a96bacbc diff --git a/src/Configuration.hs b/src/Configuration.hs index 5745d09..b791507 100644 --- a/src/Configuration.hs +++ b/src/Configuration.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE DoAndIfThenElse #-} + module Configuration ( Cfg(..), get_cfg, @@ -10,6 +12,7 @@ import Data.ConfigFile import Data.Maybe (isJust) import Data.Monoid (Monoid(..)) import System.Directory ( + doesFileExist, getAppUserDataDirectory ) import System.Exit (ExitCode(..), exitWith) @@ -86,25 +89,30 @@ config_filename = Cmd.program_name ++ ".conf" config_path :: IO FilePath config_path = do cfg_dir <- getAppUserDataDirectory Cmd.program_name - return $ joinPath [cfg_dir, config_filename] + let cfg_file = joinPath [cfg_dir, config_filename] + return $ cfg_file parse_config :: IO (Either String Cfg) parse_config = do cfg_file <- config_path - parse_result <- readfile emptyCP cfg_file - - return $ - case parse_result of - Left err -> Left (format_cpe err) - Right cp -> - let cp_username = get cp "DEFAULT" "username" - cp_password = get cp "DEFAULT" "password" + it_exists <- doesFileExist cfg_file + if not it_exists then do + return $ Right mempty + else do + parse_result <- readfile emptyCP cfg_file + + return $ + case parse_result of + Left err -> Left (format_cpe err) + Right cp -> + let cp_username = get cp "DEFAULT" "username" + cp_password = get cp "DEFAULT" "password" - cfg_username = either_to_maybe cp_username - cfg_password = either_to_maybe cp_password - in - Right $ mempty { username = cfg_username, - password = cfg_password } + cfg_username = either_to_maybe cp_username + cfg_password = either_to_maybe cp_password + in + Right $ mempty { username = cfg_username, + password = cfg_password }