import System.Environment (getArgs) import System.IO (stderr, hPutStrLn) import System.Exit (exitFailure) import System.FilePath (()) import Types import MyMonad import Actions import SanityCheck (sanityCheck) import Args (usage, parseArgs) main :: IO () main = do hPutStrLn stderr "virthualenv is deprecated, please use the hsenv tool." args <- getArgs case args of ["--version"] -> putStrLn "0.2.2" ["--help"] -> usage ["-h"] -> usage _ -> do opts <- parseArgs args case opts of Left err -> do hPutStrLn stderr err usage exitFailure Right options -> do (result, messageLog) <- runMyMonad realMain options case result of Left err -> do hPutStrLn stderr $ getExceptionMessage err hPutStrLn stderr "" hPutStrLn stderr "virthualenv.log file contains detailed description of the process." let errorLog = unlines $ messageLog ++ ["", getExceptionMessage err] writeFile "virthualenv.log" errorLog exitFailure Right () -> writeFile (".virthualenv" "virthualenv.log") $ unlines messageLog realMain :: MyMonad () realMain = do skipSanityCheckFlag <- asks skipSanityCheck if skipSanityCheckFlag then info "WARNING: sanity checks are disabled." else sanityCheck createDirStructure installGhc initGhcDb copyBaseSystem installCabalConfig installActivateScript installCabalWrapper cabalUpdate info "" info "To activate the new environment use 'source .virthualenv/bin/activate'"