@@ -4,7 +4,9 @@ import Development.Shake
4
4
import Development.Shake.Command
5
5
import Development.Shake.FilePath
6
6
import Control.Monad
7
- import Data.Maybe ( isNothing )
7
+ import Data.Maybe ( isNothing
8
+ , isJust
9
+ )
8
10
import Control.Monad.Extra ( whenMaybe )
9
11
import System.Directory ( findExecutable
10
12
, copyFile
@@ -56,20 +58,18 @@ cabalInstallHie versionNumber = do
56
58
installCabal :: Action ()
57
59
installCabal = do
58
60
-- 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
65
65
66
66
-- install `cabal-install` if not already installed
67
- when (isNothing cabalExe) $ execStackShake_ [" install" , " cabal-install" ]
67
+ unless cabalExeOk $ execStackShake_ [" install" , " cabal-install" ]
68
68
69
69
-- | check `stack` has the required version
70
70
checkCabal :: Action ()
71
71
checkCabal = do
72
- cabalVersion <- trimmedStdout <$> execCabal [ " --numeric-version " ]
72
+ cabalVersion <- getCabalVersion
73
73
unless (checkVersion requiredCabalVersion cabalVersion) $ do
74
74
printInStars $ cabalInstallIsOldFailMsg cabalVersion
75
75
error $ stackExeIsOldFailMsg cabalVersion
0 commit comments