module Runner.Cli where import Data.Monoid import Options.Applicative as Opts data Options = Options { optCmd :: String , optArgs :: [String] , optMsg :: String , optInterval :: Int } options :: Parser Options options = Options <$> pCmd <*> pArgs <*> pMsg <*> pInterval pinfo :: ParserInfo Options pinfo = info ( helper <*> options ) ( fullDesc <> header "Surpass Travis no-output timeout, \ \like travis_wait but preserve process output" ) pCmd :: Parser String pCmd = strArgument (metavar "CMD") pArgs :: Parser [String] pArgs = many $ strArgument (metavar "-- ARGS (e.g. travis-pogodi -- ls -l)") pMsg :: Parser String pMsg = strOption ( long "message" <> short 'm' <> value "Nu, Travis, pogodi!" <> showDefaultWith id <> help "message printed to stdout" ) pInterval :: Parser Int pInterval = option auto ( long "interval" <> short 'n' <> value 600 <> showDefaultWith show <> help "interval between messages in seconds")