@@ -4,7 +4,9 @@ import Development.Shake
44import Development.Shake.Command
55import Development.Shake.FilePath
66import Control.Monad
7- import Data.Maybe ( isNothing )
7+ import Data.Maybe ( isNothing
8+ , isJust
9+ )
810import Control.Monad.Extra ( whenMaybe )
911import System.Directory ( findExecutable
1012 , copyFile
@@ -56,20 +58,18 @@ cabalInstallHie versionNumber = do
5658installCabal :: Action ()
5759installCabal = do
5860 -- try to find existing `cabal` executable with appropriate version
59- cabalExe <- liftIO (findExecutable " cabal" ) >>= \ case
60- Nothing -> return Nothing
61- Just cabalExe -> do
62- cabalVersion <- trimmedStdout <$> execCabal [" --numeric-version" ]
63- whenMaybe (checkVersion requiredCabalVersion cabalVersion)
64- $ return cabalExe
61+ cabalExeOk <- do
62+ c <- liftIO (findExecutable " cabal" )
63+ when (isJust c) checkCabal
64+ return $ isJust c
6565
6666 -- install `cabal-install` if not already installed
67- when (isNothing cabalExe) $ execStackShake_ [" install" , " cabal-install" ]
67+ unless cabalExeOk $ execStackShake_ [" install" , " cabal-install" ]
6868
6969-- | check `stack` has the required version
7070checkCabal :: Action ()
7171checkCabal = do
72- cabalVersion <- trimmedStdout <$> execCabal [ " --numeric-version " ]
72+ cabalVersion <- getCabalVersion
7373 unless (checkVersion requiredCabalVersion cabalVersion) $ do
7474 printInStars $ cabalInstallIsOldFailMsg cabalVersion
7575 error $ stackExeIsOldFailMsg cabalVersion
0 commit comments