From d86f84eef49223d549af0fb0178dedfd39978234 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Sun, 11 Jul 2021 14:34:05 +0200 Subject: [PATCH 1/2] Improve logging with newlines --- lib/GHCup/Utils/Logger.hs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/GHCup/Utils/Logger.hs b/lib/GHCup/Utils/Logger.hs index cbeb6c5..2831948 100644 --- a/lib/GHCup/Utils/Logger.hs +++ b/lib/GHCup/Utils/Logger.hs @@ -20,6 +20,7 @@ import GHCup.Utils.String.QQ import Control.Monad import Control.Monad.IO.Class import Control.Monad.Logger +import Data.Char ( ord ) import Prelude hiding ( appendFile ) import System.Console.Pretty import System.FilePath @@ -43,13 +44,26 @@ myLoggerT LoggerConfig {..} loggingt = runLoggingT loggingt mylogger mylogger :: Loc -> LogSource -> LogLevel -> LogStr -> IO () mylogger _ _ level str' = do -- color output + let style' = case level of + LevelDebug -> style Bold . color Blue + LevelInfo -> style Bold . color Green + LevelWarn -> style Bold . color Yellow + LevelError -> style Bold . color Red + LevelOther _ -> id let l = case level of - LevelDebug -> toLogStr (style Bold $ color Blue "[ Debug ]") - LevelInfo -> toLogStr (style Bold $ color Green "[ Info ]") - LevelWarn -> toLogStr (style Bold $ color Yellow "[ Warn ]") - LevelError -> toLogStr (style Bold $ color Red "[ Error ]") + LevelDebug -> toLogStr (style' "[ Debug ]") + LevelInfo -> toLogStr (style' "[ Info ]") + LevelWarn -> toLogStr (style' "[ Warn ]") + LevelError -> toLogStr (style' "[ Error ]") LevelOther t -> toLogStr "[ " <> toLogStr t <> toLogStr " ]" - let out = fromLogStr (l <> toLogStr " " <> str' <> toLogStr "\n") + let strs = fmap toLogStr . B.split (fromIntegral $ ord '\n') . fromLogStr $ str' + let out = case strs of + [] -> B.empty + (x:xs) -> fromLogStr + . foldr (\a b -> a <> toLogStr "\n" <> b) mempty + . ((l <> toLogStr " " <> x) :) + . fmap (\line' -> (toLogStr (style' "[ ... ] ") <> line' )) + $ xs when (lcPrintDebug || (not lcPrintDebug && (level /= LevelDebug))) $ colorOutter out From 5cf297a4d2d6932a7d65908443859bd07169f2f5 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Sun, 11 Jul 2021 14:34:19 +0200 Subject: [PATCH 2/2] Clarify stack postinstall message wrt #153 --- ghcup-0.0.5.yaml | 13 +++++++++++-- lib/GHCup/Utils/Logger.hs | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ghcup-0.0.5.yaml b/ghcup-0.0.5.yaml index e70ba2e..fa3d646 100644 --- a/ghcup-0.0.5.yaml +++ b/ghcup-0.0.5.yaml @@ -2120,8 +2120,17 @@ ghcupDownloads: - old viChangeLog: https://github.com/commercialhaskell/stack/blob/master/ChangeLog.md#v251 viPostInstall: &stack-post | - Stack manages GHC versions internally by default. In order to make it use ghcup installed GHC versions have a look at the options 'system-ghc', 'compiler-check' and 'compiler': https://docs.haskellstack.org/en/stable/yaml_configuration/#system-ghc - Additionally, you should upgrade stack only through ghcup. + Stack manages GHC versions internally by default. In order to make it use ghcup installed + GHC versions you can run the following commands: + stack config set install-ghc false --global + stack config set system-ghc true --global + + On windows, you may find the following config options useful too: + skip-msys, extra-path, extra-include-dirs, extra-lib-dirs + + Also check out: https://docs.haskellstack.org/en/stable/yaml_configuration + + !!! Additionally, you should upgrade stack only through ghcup and not use 'stack upgrade' !!! viArch: A_64: Linux_UnknownLinux: diff --git a/lib/GHCup/Utils/Logger.hs b/lib/GHCup/Utils/Logger.hs index 2831948..e82f8ba 100644 --- a/lib/GHCup/Utils/Logger.hs +++ b/lib/GHCup/Utils/Logger.hs @@ -62,7 +62,7 @@ myLoggerT LoggerConfig {..} loggingt = runLoggingT loggingt mylogger (x:xs) -> fromLogStr . foldr (\a b -> a <> toLogStr "\n" <> b) mempty . ((l <> toLogStr " " <> x) :) - . fmap (\line' -> (toLogStr (style' "[ ... ] ") <> line' )) + . fmap (\line' -> toLogStr (style' "[ ... ] ") <> line' ) $ xs when (lcPrintDebug || (not lcPrintDebug && (level /= LevelDebug))) @@ -70,7 +70,7 @@ myLoggerT LoggerConfig {..} loggingt = runLoggingT loggingt mylogger -- raw output let lr = case level of - LevelDebug -> toLogStr "Debug: " + LevelDebug -> toLogStr "Debug:" LevelInfo -> toLogStr "Info:" LevelWarn -> toLogStr "Warn:" LevelError -> toLogStr "Error:"