diff --git a/app/ghcup/Main.hs b/app/ghcup/Main.hs
index 1e357be4d429290753f38bf0897828c6fd59a6d5..2188c618f9007bb3326d36723c5955a552a30df1 100644
--- a/app/ghcup/Main.hs
+++ b/app/ghcup/Main.hs
@@ -1701,27 +1701,39 @@ Make sure to clean up #{tmpdir} afterwards.|])
>> pure (ExitFailure 13)
else putStrLn uri' >> pure ExitSuccess
- Nuke -> do
- runLogger $ $logWarn "WARNING: This will remove GHCup and all installed components from your system."
- runLogger $ $logWarn "Waiting 10 seconds before commencing, if you want to cancel it, now would be the time."
-
- threadDelay 10000000 -- wait 10s
+ Nuke ->
+ runRm (do
+ lift $ runLogger $ $logWarn "WARNING: This will remove GHCup and all installed components from your system."
+ lift $ runLogger $ $logWarn "Waiting 10 seconds before commencing, if you want to cancel it, now would be the time."
+ liftIO $ threadDelay 10000000 -- wait 10s
+
+ lift $ runLogger $ $logInfo "Initiating Nuclear Sequence 🚀🚀🚀"
+ lift $ runLogger $ $logInfo "Nuking in 3...2...1"
- runLogger $ $logInfo "Initiating Nuclear Sequence 🚀🚀🚀"
- runLogger $ $logInfo "Nuking in 3...2...1"
- lInstalled <- runLogger . flip runReaderT appstate $ listVersions Nothing (Just ListInstalled)
- forM_ lInstalled $ runRm . rmTool
+ lInstalled <- lift $ runLogger . flip runReaderT appstate $ listVersions Nothing (Just ListInstalled)
+
+ forM_ lInstalled (liftE . rmTool)
+
+ leftOverFiles <- lift $ runLogger $ runReaderT rmGhcupDirs appstate
+ pure leftOverFiles
+
+ ) >>= \case
+ VRight leftOverFiles -> do
- leftOverFiles <- runLogger $ runReaderT rmGhcupDirs appstate
+ case length leftOverFiles of
+ 0 -> do
+ runLogger $ $logInfo "Nuclear Annihilation complete!"
+ pure ExitSuccess
+ _ -> do
+ runLogger $ $logWarn "These Directories/Files have survived Nuclear Annihilation, you may remove them manually."
+ forM_ leftOverFiles (runLogger . $logDebug . T.pack)
+ pure ExitSuccess
- case length leftOverFiles of
- 0 -> runLogger $ $logInfo "Nuclear Annihilation complete!"
- _ -> do
- runLogger $ $logWarn "These Directories/Files have survived Nuclear Annihilation, you may remove them manually."
- forM_ leftOverFiles (runLogger . $logWarn . T.pack)
+ VLeft e -> do
+ runLogger $ $(logError) $ T.pack $ prettyShow e
+ pure $ ExitFailure 15
- pure ExitSuccess
case res of
ExitSuccess -> pure ()