summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2024-04-24 20:48:21 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2024-04-24 20:48:21 +0200
commit65b6457f50576c3634651fb3f2083b0aebf7843a (patch)
tree33aa71d008e92bbf2fd83e9601d080d7cbd571ad
parentfd4c36130bddaa667235f4fa10f1895bc54fe04c (diff)
Show usage info only with explicit `--help' option
-rw-r--r--main/Main.hs16
1 files 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