module Main where
import Control.Concurrent.MVar
import Data.Semigroup ((<>))
import Options.Applicative
import StatusNotifier.Watcher.Constants
import StatusNotifier.Watcher.Service
import System.Log.Logger
setWatcherParams namespace path =
defaultWatcherParams
{ watcherNamespace = namespace
, watcherPath = path
}
watcherParamsParser :: Parser WatcherParams
watcherParamsParser = setWatcherParams
<$> strOption
( long "namespace"
<> short 'n'
<> metavar "NAMESPACE"
<> value "org.kde"
<> help "The namespace the watcher should register at.")
<*> strOption
( long "path"
<> short 'p'
<> metavar "DBUS-PATH"
<> value "/StatusNotifierWatcher"
<> help "The path at which to run the watcher." )
main = do
watcherParams <- execParser $
info (watcherParamsParser <**> helper)
( fullDesc
<> progDesc "Run a StatusNotifierWatcher")
stop <- newEmptyMVar
(_, startWatcher) <- buildWatcher watcherParams { watcherStop = putMVar stop () }
startWatcher
takeMVar stop