From 194272f2f40a3d2aeee930d502379a7526e0d28d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 21 Apr 2017 21:23:05 -0400 Subject: improve selection of command to run --- CmdLine.hs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'CmdLine.hs') diff --git a/CmdLine.hs b/CmdLine.hs index 2b496d6..8fd5c9f 100644 --- a/CmdLine.hs +++ b/CmdLine.hs @@ -16,7 +16,7 @@ data Mode | ServerMode ServerOpts data UserOpts = UserOpts - { + { cmdToRun :: Maybe (String, [String]) } data DeveloperOpts = DeveloperOpts @@ -41,12 +41,16 @@ parseCmdLine :: Parser CmdLine parseCmdLine = CmdLine <$> parseMode parseMode :: Parser Mode -parseMode = (GraphvizMode <$> parsegraphviz) +parseMode = (UserMode <$> parseuser) + <|> (DeveloperMode <$> parsedeveloper) <|> (ReplayMode <$> parsereplay) + <|> (GraphvizMode <$> parsegraphviz) <|> (ServerMode <$> parseserver) - <|> (DeveloperMode <$> parsedeveloper) - <|> pure (UserMode (UserOpts {})) -- default, so last where + parseuser = UserOpts + <$> optional ((,) + <$> strArgument (metavar "cmd") + <*> many (strArgument (metavar "opts"))) parsegraphviz = GraphvizOpts <$> option str ( long "graphviz" -- cgit v1.2.3