Adds conditional windows ghcup bin removal code. Todo: test it, add

more exception handling if required.
This commit is contained in:
Arjun Kathuria 2021-06-25 15:06:02 +05:30
parent d26ddf7015
commit 9f5df9db10
1 changed files with 13 additions and 3 deletions

View File

@ -1284,14 +1284,24 @@ rmStackVer ver = do
-- assuming the current scheme of having just 1 ghcup bin, no version info is required.
rmGhcup :: ( MonadReader AppState m
, MonadIO m
, MonadIO m,
MonadCatch m
)
=> Excepts '[NotInstalled] m ()
rmGhcup = do
AppState {dirs = Dirs {binDir}} <- lift ask
let ghcupFile = "ghcup" <> exeExt
liftIO $ hideError doesNotExistErrorType $ rmFile (binDir </> ghcupFile)
let ghcupFilename = "ghcup" <> exeExt
let ghcupFilepath = binDir </> ghcupFilename
#if defined(IS_WINDOWS)
-- since it doesn't seem possible to delete a running exec in windows
-- we move it to temp dir, to be deleted at next reboot
tempDir <- liftIO $ getTemporaryDirectory
tempFilepath = tempDir </> ghcupFilename
hideError doesNotExistErrorType $ liftIO $ renameFile ghcupFilepath tempFilepath
#else
hideError doesNotExistErrorType $ liftIO $ rmFile ghcupFilepath
#endif
rmTool :: ( MonadReader AppState m
, MonadLogger m