1module Stackage.CheckCabalVersion
5import Control.Exception (assert)
6import Control.Monad (unless, when)
7import qualified Data.Map as Map
8import Data.Maybe (mapMaybe)
10import qualified Data.Set as Set
11import Distribution.Text (simpleParse)
12import Distribution.Version (withinRange)
13import Prelude hiding (pi)
14import Stackage.CheckPlan
16import Stackage.InstallInfo
17import Stackage.Tarballs
21import System.Directory (canonicalizePath,
22 createDirectoryIfMissing,
24import System.Exit (ExitCode (ExitSuccess), exitWith)
25import System.IO (IOMode (WriteMode), hPutStrLn,
27import System.Process (rawSystem, readProcess, runProcess,
30checkCabalVersion :: IO String
32 versionString <- readProcess "cabal" ["--version"] ""
34 case map words $ lines versionString of
35 [_,["using","version",libVersion,"of","the","Cabal","library"]] -> return libVersion
36 _ -> error "Did not understand cabal --version output"
38 case (simpleParse libVersion, simpleParse ">= 1.16") of
39 (Nothing, _) -> error $ "Invalid Cabal library version: " ++ libVersion
40 (_, Nothing) -> assert False $ return ()
42 | v `withinRange` vr -> return ()
43 | otherwise -> error $ "Unsupported Cabal version: " ++ libVersion
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list