@@ -9,6 +9,7 @@ import System.IO
99
1010import Control.Applicative ((<$>))
1111import Control.Arrow (second)
12+import Control.Monad (when)
1213import qualified Data.Aeson.Encode.Pretty as Json
1314import qualified Data.ByteString.Lazy.Char8 as BS
1415import qualified Data.Map as Map
@@ -54,7 +55,17 @@ defaultFlags = Flags
5455main :: IO ()
5556main =
5657 do flags <- cmdArgs defaultFlags
57− source <- readFile (input flags)
58+ let inputFileName = input flags
59+
60+ exists <- doesFileExist inputFileName
61+ when (not exists) $
62+ do hPutStrLn stderr $
63+ if null inputFileName
64+ then "Error: you must provide a file to document!"
65+ else "Error: could not find a file named '" ++ inputFileName ++ "'"
66+ exitFailure
67+
68+ source <- readFile inputFileName
5869 case Parse.iParse documentation source of
5970 Right docs ->
6071 let json = Json.encodePretty' config docs in