module UHC.Light.Compiler.EHC.Main.Utils ( module UHC.Light.Compiler.EHC.FileSuffMp , module UHC.Light.Compiler.Opts , handleImmQuitOption ) where import UHC.Light.Compiler.EHC.Common import UHC.Light.Compiler.EHC.FileSuffMp import qualified UHC.Light.Compiler.Config as Cfg import UHC.Light.Compiler.Opts import System.Console.GetOpt import System.Environment import UHC.Light.Compiler.Base.Target import UHC.Light.Compiler.Base.Optimize (allOptimizeMp) import qualified UHC.Light.Compiler.SourceCodeSig as Sig {-# LINE 34 "src/ehc/EHC/Main/Utils.chs" #-} -- | Handle a commandline option directly handleImmQuitOption :: GetOptCmdLineOpts -> [String] -> ImmediateQuitOption -> EHCOpts -> IO () handleImmQuitOption cmdLineOpts inputSuffixes immq opts = case immq of ImmediateQuitOption_Help -> do { let progName = fpathToStr (ehcProgName opts) ; putStrLn (usageInfo ( "version: " ++ Cfg.verInfo Cfg.version ++ ", aspects: " ++ ehcOptAspects opts ++ "\n\nUsage: " ++ progName ++ " [options] [file[" ++ (concat $ intersperse "|" $ map ('.':) inputSuffixes) ++ "] ...]\n\noptions:" ) cmdLineOpts) } ImmediateQuitOption_Version -> putStrLn $ Cfg.verInfo Cfg.version ++ ", timestamp " ++ Sig.timestamp ImmediateQuitOption_Meta_Variant -> putStrLn Cfg.ehcDefaultVariant ImmediateQuitOption_Meta_Targets -> putStr showSupportedTargets ImmediateQuitOption_Meta_TargetDefault -> putStr (show defaultTarget) ImmediateQuitOption_Meta_Optimizations -> putStr (showStringMapKeys allOptimizeMp " ") ImmediateQuitOption_VersionDotted -> putStrLn (Cfg.verFull Cfg.version) ImmediateQuitOption_VersionAsNumber -> putStrLn (Cfg.verAsNumber Cfg.version) {- ImmediateQuitOption_Meta_ExportEnv mvEnvOpt -> exportEHCEnvironment (mkEhcenvKey (Cfg.verFull Cfg.version) (fpathToStr $ ehcProgName opts) Cfg.ehcDefaultVariant) (env {ehcenvInstallRoot = installRootDir, ehcenvVariant = variant}) where env = ehcOptEnvironment opts (installRootDir,variant) = case fmap (wordsBy (`elem` ",;")) mvEnvOpt of Just (d:v:_) -> (d,v) Just (d:_) -> (d,ehcenvVariant env) _ -> (ehcenvInstallRoot env,ehcenvVariant env) ImmediateQuitOption_Meta_DirEnv -> do { d <- ehcenvDir (mkEhcenvKey (Cfg.verFull Cfg.version) (fpathToStr $ ehcProgName opts) Cfg.ehcDefaultVariant) ; putStrLn d } -} ImmediateQuitOption_Meta_Pkgdir_System -> do { let d = Cfg.mkInstallPkgdirSystem opts ; putStrLn d } ImmediateQuitOption_Meta_Pkgdir_User -> do { let d = Cfg.mkInstallPkgdirUser opts ; putStrLn d }