@@ -77,6 +77,7 @@ parseArgs spec argv
7777----------------------------------------------------------------
7878
7979data GHCModError = SafeList
80+ | TooManyArguments String
8081 | NoSuchCommand String
8182 | CmdArg [String ]
8283 | FileNotExist String deriving (Show , Typeable )
@@ -100,15 +101,19 @@ main = flip catches handlers $ do
100101 cmdArg2 = cmdArg !. 2
101102 cmdArg3 = cmdArg !. 3
102103 cmdArg4 = cmdArg !. 4
104+ remainingArgs = tail cmdArg
105+ nArgs n f = if length remainingArgs == n
106+ then f
107+ else throw (TooManyArguments cmdArg0)
103108 res <- case cmdArg0 of
104- " browse" -> concat <$> mapM (browseModule opt) ( tail cmdArg)
109+ " browse" -> concat <$> mapM (browseModule opt) remainingArgs
105110 " list" -> listModules opt
106- " check" -> withFile (checkSyntax opt cradle) cmdArg1
107- " expand" -> withFile (checkSyntax opt { expandSplice = True } cradle) cmdArg1
108- " debug" -> withFile (debugInfo opt cradle strVer) cmdArg1
109- " type" -> withFile (typeExpr opt cradle cmdArg2 (read cmdArg3) (read cmdArg4)) cmdArg1
110- " info" -> withFile (infoExpr opt cradle cmdArg2 cmdArg3) cmdArg1
111- " lint" -> withFile (lintSyntax opt) cmdArg1
111+ " check" -> nArgs 1 $ withFile (checkSyntax opt cradle) cmdArg1
112+ " expand" -> nArgs 1 $ withFile (checkSyntax opt { expandSplice = True } cradle) cmdArg1
113+ " debug" -> nArgs 1 $ withFile (debugInfo opt cradle strVer) cmdArg1
114+ " type" -> nArgs 4 $ withFile (typeExpr opt cradle cmdArg2 (read cmdArg3) (read cmdArg4)) cmdArg1
115+ " info" -> nArgs 3 $ withFile (infoExpr opt cradle cmdArg2 cmdArg3) cmdArg1
116+ " lint" -> nArgs 1 $ withFile (lintSyntax opt) cmdArg1
112117 " lang" -> listLanguages opt
113118 " flag" -> listFlags opt
114119 " boot" -> do
@@ -125,6 +130,9 @@ main = flip catches handlers $ do
125130 handler1 = print -- for debug
126131 handler2 :: GHCModError -> IO ()
127132 handler2 SafeList = printUsage
133+ handler2 (TooManyArguments cmd) = do
134+ hPutStrLn stderr $ " \" " ++ cmd ++ " \" : Too many arguments"
135+ printUsage
128136 handler2 (NoSuchCommand cmd) = do
129137 hPutStrLn stderr $ " \" " ++ cmd ++ " \" not supported"
130138 printUsage
0 commit comments