{-# OPTIONS_GHC -fno-warn-unused-imports #-} -- | This is just a stub executable that uses dyre to read the config file and -- recompile itself. module Main ( main ) where import Data.Default (def) import Data.Semigroup ((<>)) import Data.Version import Options.Applicative import System.Directory import System.Log.Logger import System.Taffybar import System.Taffybar.Context import System.Taffybar.Example import Text.Printf import Paths_taffybar (version) logP :: Parser Priority logP = option auto ( long "log-level" <> short 'l' <> help "Set the log level" <> metavar "LEVEL" <> value WARNING ) versionOption :: Parser (a -> a) versionOption = infoOption (printf "taffybar %s" $ showVersion version) ( long "version" <> help "Show the version number of taffybar" ) main :: IO () main = do logLevel <- execParser $ info (helper <*> versionOption <*> logP) ( fullDesc <> progDesc "Start taffybar, recompiling if necessary" ) logger <- getLogger "System.Taffybar" saveGlobalLogger $ setLevel logLevel logger taffyFilepath <- getTaffyFile "taffybar.hs" configurationExists <- doesFileExist taffyFilepath if configurationExists -- XXX: The configuration record here does not get used, this just calls in to dyre. then dyreTaffybar def else do logM "System.Taffybar" WARNING $ ( printf "No taffybar configuration file found at %s." taffyFilepath ++ " Starting with example configuration." ) startTaffybar exampleTaffybarConfig