From c42c4b64f9f82d9f05cfdb06a1190b1b8109d3a2 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Sat, 18 Sep 2021 15:46:53 +0200 Subject: [PATCH] Improve logging --- app/ghcup/Main.hs | 32 ++++++++++++++++++++++++++------ lib/GHCup.hs | 1 + 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/app/ghcup/Main.hs b/app/ghcup/Main.hs index 09ee64e..8b92759 100644 --- a/app/ghcup/Main.hs +++ b/app/ghcup/Main.hs @@ -1763,8 +1763,12 @@ Report bugs at |] pure ExitSuccess VLeft (V (AlreadyInstalled _ v)) -> do runLogger $ logWarn $ - "GHC ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup rm ghc " <> prettyVer v <> "' first" + "GHC ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup install ghc --force " <> prettyVer v <> "'" pure ExitSuccess + VLeft (V (DirNotEmpty fp)) -> do + runLogger $ logWarn $ + "Install directory " <> T.pack fp <> " is not empty. Use 'ghcup install ghc --isolate " <> T.pack fp <> " --force ..." <> "' to install regardless." + pure $ ExitFailure 3 VLeft err@(V (BuildFailed tmpdir _)) -> do case keepDirs settings of Never -> runLogger $ (logError $ T.pack $ prettyShow err) @@ -1807,8 +1811,12 @@ Report bugs at |] pure ExitSuccess VLeft (V (AlreadyInstalled _ v)) -> do runLogger $ logWarn $ - "Cabal ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup rm cabal " <> prettyVer v <> "' first" + "Cabal ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup install cabal --force " <> prettyVer v <> "'" pure ExitSuccess + VLeft (V (FileAlreadyExistsError fp)) -> do + runLogger $ logWarn $ + "File " <> T.pack fp <> " already exists. Use 'ghcup install cabal --isolate " <> T.pack fp <> " --force ..." <> "' if you want to overwrite." + pure $ ExitFailure 3 VLeft e -> do runLogger $ do logError $ T.pack $ prettyShow e @@ -1845,10 +1853,14 @@ Report bugs at |] runLogger $ logWarn $ "HLS ver " <> prettyVer v - <> " already installed; if you really want to reinstall it, you may want to run 'ghcup rm hls " + <> " already installed; if you really want to reinstall it, you may want to run 'ghcup install hls --force " <> prettyVer v - <> "' first" + <> "'" pure ExitSuccess + VLeft (V (FileAlreadyExistsError fp)) -> do + runLogger $ logWarn $ + "File " <> T.pack fp <> " already exists. Use 'ghcup install hls --isolate " <> T.pack fp <> " --force ..." <> "' if you want to overwrite." + pure $ ExitFailure 3 VLeft e -> do runLogger $ do logError $ T.pack $ prettyShow e @@ -1883,8 +1895,12 @@ Report bugs at |] pure ExitSuccess VLeft (V (AlreadyInstalled _ v)) -> do runLogger $ logWarn $ - "Stack ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup rm stack " <> prettyVer v <> "' first" + "Stack ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup install stack --force " <> prettyVer v <> "'" pure ExitSuccess + VLeft (V (FileAlreadyExistsError fp)) -> do + runLogger $ logWarn $ + "File " <> T.pack fp <> " already exists. Use 'ghcup install stack --isolate " <> T.pack fp <> " --force ..." <> "' if you want to overwrite." + pure $ ExitFailure 3 VLeft e -> do runLogger $ do logError $ T.pack $ prettyShow e @@ -2119,8 +2135,12 @@ Report bugs at |] pure ExitSuccess VLeft (V (AlreadyInstalled _ v)) -> do runLogger $ logWarn $ - "GHC ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup rm ghc " <> prettyVer v <> "' first" + "GHC ver " <> prettyVer v <> " already installed; if you really want to reinstall it, you may want to run 'ghcup install ghc --force " <> prettyVer v <> "'" pure ExitSuccess + VLeft (V (DirNotEmpty fp)) -> do + runLogger $ logWarn $ + "Install directory " <> T.pack fp <> " is not empty. Use 'ghcup install ghc --isolate " <> T.pack fp <> " --force ..." <> "' to install regardless." + pure $ ExitFailure 3 VLeft err@(V (BuildFailed tmpdir _)) -> do case keepDirs settings of Never -> runLogger $ logError $ T.pack $ prettyShow err diff --git a/lib/GHCup.hs b/lib/GHCup.hs index bc6d50b..4f6b188 100644 --- a/lib/GHCup.hs +++ b/lib/GHCup.hs @@ -2434,6 +2434,7 @@ whereIsTool tool ver@GHCTargetVersion {..} = do currentRunningExecPath <- liftIO getExecutablePath liftIO $ canonicalizePath currentRunningExecPath +-- | Doesn't work for cross GHC. checkIfToolInstalled :: ( MonadIO m , MonadReader env m , HasDirs env