 = info (helper <*> config)
      ( fullDesc
     <> progDesc "CodeWorld simple bot"
     <> header "codeword-game-bot - a simple mirroring bot for codeworld-gameserver")
  where
    config :: Parser Config
    config = Config
      <$> option auto
          ( long "clients"
         <> short 'c'
         <> showDefault
         <> metavar "N"
         <> value 1
         <> help "Number of clients to simulate (>=1)" )
      <*> switch
          ( long "invert"
         <> showDefault
         <> help "Return opposite direction" )
      <*> optional (option auto
          ( long "delay"
         <> showDefault
         <> metavar "ms"
         <> help "Use remote timestamp and adjust with this many milli seconds. Default is to use local time stamps. Can be negative."))
      <*> strOption
          ( long "hostname"
         <> showDefault
         <> value "0.0.0.0"
         <> metavar "HOSTNAME"
         <> help "Hostname" )
      <*> option auto
          ( long "port"
         <> showDefault
         <> metavar "PORT"
         <> value 9160
         <> help "Port" )
      <*> strOption
          ( long "path"
         <> showDefault
         <> metavar "PATH"
         <> value "gameserver"
         <> help "Path")
      <*> (T.pack <$> strOption
          ( long "gameid"
         <> showDefault
         <> metavar "ID"
         <> help "The ID of the game to join (4 letters)"))
      <*> switch
          ( long "debug"
         <> showDefault
         <> help "Show debugging output" )

ma
opts = info (helper <*> config)
      ( fullDesc
     <> progDesc "CodeWorld simple bot"
     <> header "codeword-game-bot - a simple mirroring bot for codeworld-gameserver")
  where
    config :: Parser Config
    config = Config
      <$> option auto
          ( long "clients"
         <> short 'c'
         <> showDefault
         <> metavar "N"
         <> value 1
         <> help "Number of clients to simulate (>=1)" )
      <*> switch
          ( long "invert"
         <> showDefault
         <> help "Return opposite direction" )
      <*> optional (option auto
          ( long "delay"
         <> showDefault
         <> metavar "ms"
         <> help "Use remote timestamp and adjust with this many milli seconds. Default is to use local time stamps. Can be negative."))
      <*> strOption
          ( long "hostname"
         <> showDefault
         <> value "0.0.0.0"
         <> metavar "HOSTNAME"
         <> help "Hostname" )
      <*> option auto
          ( long "port"
         <> showDefault
         <> metavar "PORT"
         <> value 9160
         <> help "Port" )
      <*> strOption
          ( long "path"
         <> showDefault
         <> metavar "PATH"
         <> value "gameserver"
         <> help "Path")
      <*> (T.pack <$> strOption
          ( long "gameid"
         <> showDefault
         <> metavar "ID"
         <> help "The ID of the game to join (4 letters)"))
      <*> switch
          ( long "debug"
         <> showDefault
         <> help "Show debugging output" )
opts = info (helper <*> config)
      ( fullDesc
     <> progDesc "CodeWorld simple bot"
     <> header "codeword-game-bot - a simple mirroring bot for codeworld-gameserver")
  where
    config :: Parser Config
    config = Config
      <$> option auto
          ( long "clients"
         <> short 'c'
         <> showDefault
         <> metavar "N"
         <> value 1
         <> help "Number of clients to simulate (>=1)" )
      <*> switch
          ( long "invert"
         <> showDefault
         <> help "Return opposite direction" )
      <*> optional (option auto
          ( long "delay"
         <> showDefault
         <> metavar "ms"
         <> help "Use remote timestamp and adjust with this many milli seconds. Default is to use local time stamps. Can be negative."))
      <*> strOption
          ( long "hostname"
         <> showDefault
         <> value "0.0.0.0"
         <> metavar "HOSTNAME"
         <> help "Hostname" )
      <*> option auto
          ( long "port"
         <> showDefault
         <> metavar "PORT"
         <> value 9160
         <> help "Port" )
      <*> strOption
          ( long "path"
         <> showDefault
         <> metavar "PATH"
         <> value "gameserver"
         <> help "Path")
      <*> (T.pack <$> strOption
          ( long "gameid"
         <> showDefault
         <> metavar "ID"
         <> help "The ID of the game to join (4 letters)"))
      <*> switch
          ( long "debug"
         <> showDefault
         <> help "Show debugging output" )