packages feed

status-notifier-item-0.1.0.0: watcher/Main.hs

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