diff --git a/src/Confer/Cmd/Check.hs b/src/Confer/Cmd/Check.hs index 714e3ef..5f69fb1 100644 --- a/src/Confer/Cmd/Check.hs +++ b/src/Confer/Cmd/Check.hs @@ -6,12 +6,14 @@ import Data.Foldable import Data.Function import Data.List.NonEmpty import Data.List.NonEmpty qualified as NE +import Data.Text (Text) import Data.Text qualified as Text import Data.Text.Display import Data.Text.IO qualified as Text import Effectful import Effectful.FileSystem (FileSystem) import Effectful.FileSystem qualified as FileSystem +import System.Exit qualified as System import System.Info qualified as System import System.OsPath ((), OsPath) import System.OsPath qualified as OsPath @@ -19,7 +21,7 @@ import Validation import Confer.Config.Evaluator import Confer.Config.Types -import Confer.Effect.Symlink (Symlink, SymlinkError) +import Confer.Effect.Symlink (Symlink, SymlinkError(..)) import Confer.Effect.Symlink qualified as Symlink check @@ -39,8 +41,11 @@ check = do liftIO $ Text.putStrLn $ "[+] Checking " <> display fact validateSymlink fact) deployments case result of - Failure errors-> - liftIO $ print errors + Failure errors -> do + forM_ errors $ + \e -> + liftIO $ Text.putStrLn $ formatSymlinkError e + liftIO System.exitFailure Success _ -> pure () Left e -> error e @@ -54,3 +59,13 @@ validateSymlink fact = do case result of Right _ -> pure $ Success () Left e -> pure $ Failure (NE.singleton e) + +formatSymlinkError :: SymlinkError -> Text +formatSymlinkError (DoesNotExist path) = + "[!] " + <> display (Text.pack . show $ path) + <> " does not exist" +formatSymlinkError (IsNotSymlink path) = + "[!] " + <> display (Text.pack . show $ path) + <> " is not a symbolic link!"