[change --config to --info to match ghc, show output in YAML format
John Meacham <john@repetae.net>**20100725121804
 Ignore-this: 18ad089df6893f26d8453a4b072a77bc
] hunk ./src/Main.hs 29
-import qualified Version.Config as VC
hunk ./src/Main.hs 44
-        Version         -> putStrLn versionString
-        StopError s     -> putErrLn "bad option passed to --stop should be one of parse, typecheck, or c" >> exitWith exitCodeUsage 
-        PrintHscOptions -> putStrLn $ "-I" ++ VC.datadir ++ "/" ++ VC.package ++ "-" ++ VC.shortVersion ++ "/include"
-        VersionCtx      -> putStrLn (versionString ++ BS.toString versionContext)
hunk ./src/Main.hs 49
-exitCodeUsage = ExitFailure 64
-
hunk ./src/Options.hs 47
+import Util.YAML
+import Util.ExitCodes
hunk ./src/Options.hs 50
-import Version.Version(versionString)
+import Version.Version(versionString,versionContext)
+import qualified Version.Config as VC
hunk ./src/Options.hs 234
-    , Option []    ["config"]    (NoArg  (optMode_s ShowConfig))       "show a variety of config info"
+    , Option []    ["info"]    (NoArg  (optMode_s ShowConfig))         "show compiler configuration information and exit"
hunk ./src/Options.hs 267
-    , Option []    ["ho-cache"]    (ReqArg (optHoCache_s . Just ) "JHC_CACHE")    "Use a global ho cache located at the argument"
+    , Option []    ["ho-cache"]    (ReqArg (optHoCache_s . Just ) "JHC_CACHE")  "Use a global cache located in the directory passed as an argument."
hunk ./src/Options.hs 321
+helpUsage = usageInfo header theoptions ++ trailer where
+    header = "Usage: jhc [OPTION...] Main.hs"
+    trailer = "\n" ++ mkoptlist "-d" FlagDump.helpFlags ++ "\n" ++ mkoptlist "-f" FlagOpts.helpFlags
+    mkoptlist d os = "valid " ++ d ++ " arguments: 'help' for more info\n    " ++ intercalate "\n    " (map (intercalate ", ") $ pfill 100 ((2 +) . length) os) ++ "\n"
+
hunk ./src/Options.hs 331
-    let header = "Usage: jhc [OPTION...] Main.hs"
-    let mkoptlist d os = "valid " ++ d ++ " arguments: 'help' for more info\n    " ++ intercalate "\n    " (map (intercalate ", ") $ pfill 100 ((2 +) . length) os) ++ "\n"
-    let trailer = "\n" ++ mkoptlist "-d" FlagDump.helpFlags ++ "\n" ++ mkoptlist "-f" FlagOpts.helpFlags
hunk ./src/Options.hs 332
-    when (rc /= []) $ putErrDie (concat rc ++ usageInfo header theoptions ++ trailer)
+    when (rc /= []) $ putErrLn (concat rc ++ helpUsage) >> exitWith exitCodeUsage
hunk ./src/Options.hs 335
-    when (optMode o2 == ShowHelp) $ do
-        putStrLn (usageInfo header theoptions ++ trailer)
-        exitSuccess
-    when (optMode o2 == ShowConfig) $ do
-        mapM_ (\ (x,y) -> putStrLn (x ++ ": " ++ y))  configs
-        exitSuccess
+    case optMode o2 of
+        ShowHelp    -> doShowHelp
+        ShowConfig  -> doShowConfig
+        StopError s -> putErrLn "bad option passed to --stop should be one of parse, deps, typecheck, or c" >> exitWith exitCodeUsage
+        Version     -> putStrLn versionString >> exitSuccess
+        VersionCtx  -> putStrLn (versionString ++ BS.toString versionContext) >> exitSuccess
+        PrintHscOptions -> do
+            putStrLn $ "-I" ++ VC.datadir ++ "/" ++ VC.package ++ "-" ++ VC.shortVersion ++ "/include"
+            exitSuccess
+        _ -> return ()
hunk ./src/Options.hs 355
+doShowHelp = do
+    putStrLn helpUsage
+    exitSuccess
+
+
+doShowConfig = do
+    --mapM_ (\ (x,y) -> putStrLn (x ++ ": " ++ y))  configs
+    putStrLn $ showYAML  configs
+    exitSuccess
hunk ./src/Options.hs 380
-a ==> b = (a,show b)
hunk ./src/Options.hs 381
-configs = [
+configs = toNode [
hunk ./src/Options.hs 389
-    ]
+    ] where
+    a ==> b = (a,toNode b)
hunk ./src/Options.hs 463
-
hunk ./src/Options.hs 477
-
-
addfile ./src/Util/ExitCodes.hs
hunk ./src/Util/ExitCodes.hs 1
+module Util.ExitCodes where
+
+import System.Exit
+
+-- The command was used incorrectly, e.g., with
+-- the wrong number of arguments, a bad flag, a bad
+-- syntax in a parameter, or whatever.
+exitCodeUsage = ExitFailure 64
+
+-- EX_DATAERR -- The input data was incorrect in some way.
+-- 	This should only be used for user's data & not
+-- 	system files.
+exitCodeDataError = ExitFailure 65
+
+-- EX_NOINPUT -- An input file (not a system file) did not
+-- 	exist or was not readable.  This could also include
+-- 	errors like "No message" to a mailer (if it cared
+-- 	to catch it).
+exitCodeNoInput = ExitFailure 66
+
+-- EX_NOUSER -- The user specified did not exist.  This might
+-- 	be used for mail addresses or remote logins.
+exitCodeNoUser = ExitFailure 67
+
+-- EX_NOHOST -- The host specified did not exist.  This is used
+-- 	in mail addresses or network requests.
+exitCodeNoHost = ExitFailure 68
+
+-- EX_UNAVAILABLE -- A service is unavailable.  This can occur
+-- 	if a support program or file does not exist.  This
+-- 	can also be used as a catchall message when something
+-- 	you wanted to do doesn't work, but you don't know
+-- 	why.
+exitCodeUnavailable = ExitFailure 69
+
+-- EX_SOFTWARE -- An internal software error has been detected.
+-- 	This should be limited to non-operating system related
+-- 	errors as possible.
+exitCodeSoftware = ExitFailure 70
+
+-- EX_OSERR -- An operating system error has been detected.
+-- 	This is intended to be used for such things as "cannot
+-- 	fork", "cannot create pipe", or the like.  It includes
+-- 	things like getuid returning a user that does not
+-- 	exist in the passwd file.
+exitCodeOSError = ExitFailure 71
+
+-- EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp,
+-- 	etc.) does not exist, cannot be opened, or has some
+-- 	sort of error (e.g., syntax error).
+exitCodeOSFile = ExitFailure 72
+
+-- EX_CANTCREAT -- A (user specified) output file cannot be
+-- 	created.
+exitCodeCantCreate = ExitFailure 73
+
+-- EX_IOERR -- An error occurred while doing I/O on some file.
+exitCodeIOErr = ExitFailure 74
+
+-- EX_TEMPFAIL -- temporary failure, indicating something that
+-- 	is not really an error.  In sendmail, this means
+-- 	that a mailer (e.g.) could not create a connection,
+-- 	and the request should be reattempted later.
+exitCodeTempFailure = ExitFailure 75
+
+-- EX_PROTOCOL -- the remote system returned something that
+-- 	was "not possible" during a protocol exchange.
+exitCodeProtocol = ExitFailure 76
+
+-- EX_NOPERM -- You did not have sufficient permission to
+-- 	perform the operation.  This is not intended for
+-- 	file system problems, which should use NOINPUT or
+-- 	CANTCREAT, but rather for higher level permissions.
+exitCodeNoPerm = ExitFailure 77
+
+-- configuration error
+exitCodeConfig = ExitFailure 78
+