module Main where import Bcc.Chairman.Commands import Control.Monad import Data.Function import Data.Semigroup import Options.Applicative import System.IO (IO) main :: IO () main :: IO () main = IO (IO ()) -> IO () forall (m :: * -> *) a. Monad m => m (m a) -> m a join (IO (IO ()) -> IO ()) -> (ParserInfo (IO ()) -> IO (IO ())) -> ParserInfo (IO ()) -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ParserPrefs -> ParserInfo (IO ()) -> IO (IO ()) forall a. ParserPrefs -> ParserInfo a -> IO a customExecParser ( PrefsMod -> ParserPrefs prefs (PrefsMod showHelpOnEmpty PrefsMod -> PrefsMod -> PrefsMod forall a. Semigroup a => a -> a -> a <> PrefsMod showHelpOnError) ) (ParserInfo (IO ()) -> IO ()) -> ParserInfo (IO ()) -> IO () forall a b. (a -> b) -> a -> b $ Parser (IO ()) -> InfoMod (IO ()) -> ParserInfo (IO ()) forall a. Parser a -> InfoMod a -> ParserInfo a info (Parser (IO ()) commands Parser (IO ()) -> Parser (IO () -> IO ()) -> Parser (IO ()) forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> Parser (IO () -> IO ()) forall a. Parser (a -> a) helper) ( InfoMod (IO ()) forall a. InfoMod a fullDesc InfoMod (IO ()) -> InfoMod (IO ()) -> InfoMod (IO ()) forall a. Semigroup a => a -> a -> a <> String -> InfoMod (IO ()) forall a. String -> InfoMod a progDesc String "Chairman checks Bcc clusters for progress and consensus." InfoMod (IO ()) -> InfoMod (IO ()) -> InfoMod (IO ()) forall a. Semigroup a => a -> a -> a <> String -> InfoMod (IO ()) forall a. String -> InfoMod a header String "Chairman sits in a room full of Sophie nodes, and checks \ \if they are all behaving ..." )