From 65b6457f50576c3634651fb3f2083b0aebf7843a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Wed, 24 Apr 2024 20:48:21 +0200 Subject: Show usage info only with explicit `--help' option --- main/Main.hs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/main/Main.hs b/main/Main.hs index 2032abc..e14e37c 100644 --- a/main/Main.hs +++ b/main/Main.hs @@ -56,12 +56,14 @@ import Version data Options = Options { optServer :: ServerOptions + , optShowHelp :: Bool , optShowVersion :: Bool } defaultOptions :: Options defaultOptions = Options { optServer = defaultServerOptions + , optShowHelp = False , optShowVersion = False } @@ -73,6 +75,9 @@ options = , Option ['s'] ["silent"] (NoArg (so $ \opts -> opts { serverLocalDiscovery = False })) "do not send announce packets for local discovery" + , Option ['h'] ["help"] + (NoArg $ \opts -> opts { optShowHelp = True }) + "show this help and exit" , Option ['V'] ["version"] (NoArg $ \opts -> opts { optShowVersion = True }) "show version and exit" @@ -135,12 +140,13 @@ main = do args -> case getOpt Permute options args of (o, [], []) -> do let opts = foldl (flip id) defaultOptions o - if optShowVersion opts - then putStrLn versionLine - else interactiveLoop st opts + header = "Usage: erebos [OPTION...]" + if | optShowHelp opts -> putStr $ usageInfo header options + | optShowVersion opts -> putStrLn versionLine + | otherwise -> interactiveLoop st opts (_, _, errs) -> do - let header = "Usage: erebos [OPTION...]" - hPutStr stderr $ concat errs ++ usageInfo header options + progName <- getProgName + hPutStrLn stderr $ concat errs <> "Try `" <> progName <> " --help' for more information." exitFailure -- cgit v1.2.3