summaryrefslogtreecommitdiffhomepage
path: root/app
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2018-11-26 03:31:53 +0000
committerjao <jao@gnu.org>2018-11-26 03:31:53 +0000
commit5bb1fec0ba93e56691f043323dddf3bb303b5636 (patch)
treea90a4d68141ad38a8d272b48c1688c7f9c232018 /app
parent7c270f9d0810db118f4ba3b8c47bc70b8be78d1e (diff)
downloadxmobar-5bb1fec0ba93e56691f043323dddf3bb303b5636.tar.gz
xmobar-5bb1fec0ba93e56691f043323dddf3bb303b5636.tar.bz2
Utilities for dealing with config and data directories
Diffstat (limited to 'app')
-rw-r--r--app/Configuration.hs53
-rw-r--r--app/Main.hs27
2 files changed, 23 insertions, 57 deletions
diff --git a/app/Configuration.hs b/app/Configuration.hs
deleted file mode 100644
index 3e30730..0000000
--- a/app/Configuration.hs
+++ /dev/null
@@ -1,53 +0,0 @@
-{-# LANGUAGE FlexibleContexts, CPP #-}
-
-------------------------------------------------------------------------------
--- |
--- Module: Configuration
--- Copyright: (c) 2018 Jose Antonio Ortega Ruiz
--- License: BSD3-style (see LICENSE)
---
--- Maintainer: jao@gnu.org
--- Stability: unstable
--- Portability: portable
--- Created: Wed Nov 21, 2018 23:13
---
---
--- Parsing configuration files
---
-------------------------------------------------------------------------------
-
-
-module Configuration (readConfig, readDefaultConfig) where
-
-import Control.Monad.IO.Class (liftIO)
-
-import System.Environment
-import System.Posix.Files (fileExist)
-
-import qualified Xmobar as X
-
--- | Reads the configuration files or quits with an error
-readConfig :: FilePath -> String -> IO (X.Config,[String])
-readConfig f usage = do
- let err m = error $ f ++ ": " ++ m
- file <- liftIO $ fileExist f
- r <- if file
- then X.readConfig X.defaultConfig f
- else err $ "file not found" ++ "\n" ++ usage
- case r of
- Left e -> err (show e)
- Right res -> return res
-
--- | Read default configuration file or load the default config
-readDefaultConfig :: String -> IO (X.Config,[String])
-readDefaultConfig usage = do
- xdgConfigFile <- X.getXdgConfigFile
- xdgConfigFileExists <- liftIO $ fileExist xdgConfigFile
- home <- liftIO $ getEnv "HOME"
- let defaultConfigFile = home ++ "/.xmobarrc"
- defaultConfigFileExists <- liftIO $ fileExist defaultConfigFile
- if xdgConfigFileExists
- then readConfig xdgConfigFile usage
- else if defaultConfigFileExists
- then readConfig defaultConfigFile usage
- else return (X.defaultConfig,[])
diff --git a/app/Main.hs b/app/Main.hs
index b5d3993..51bfe8b 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -23,11 +23,10 @@ import System.Exit
import System.Environment (getArgs)
import Control.Monad (unless)
import Text.Read (readMaybe)
+import System.Posix.Files (fileExist)
import Xmobar
-
import Paths_xmobar (version)
-import Configuration as C (readConfig, readDefaultConfig)
-- $main
@@ -36,12 +35,32 @@ main :: IO ()
main = do
(o,file) <- getArgs >>= getOpts
(c,defaultings) <- case file of
- [cfgfile] -> C.readConfig cfgfile usage
- _ -> C.readDefaultConfig usage
+ [cfgfile] -> config cfgfile usage
+ _ -> defConfig usage
unless (null defaultings || (not $ any (== Debug) o)) $ putStrLn $
"Fields missing from config defaulted: " ++ intercalate "," defaultings
doOpts c o >>= xmobar
+config :: FilePath -> String -> IO (Config,[String])
+config f msg = do
+ let err m = error $ f ++ ": " ++ m
+ file <- fileExist f
+ r <- if file
+ then readConfig defaultConfig f
+ else err $ "file not found" ++ "\n" ++ msg
+ case r of
+ Left e -> err (show e)
+ Right res -> return res
+
+-- | Read default configuration file or load the default config
+defConfig :: String -> IO (Config,[String])
+defConfig msg = do
+ xdgConfigFile <- xmobarConfigFile
+ xdgConfigFileExists <- fileExist xdgConfigFile
+ if xdgConfigFileExists
+ then config xdgConfigFile msg
+ else return (defaultConfig,[])
+
data Opts = Help
| Debug
| Version