diff options
author | Daniel Gröber <dxld@darkboxed.org> | 2019-03-31 23:31:44 +0200 |
---|---|---|
committer | Daniel Gröber <dxld@darkboxed.org> | 2019-04-01 20:37:54 +0200 |
commit | e7ff295ff2f2ed1e7682bd1d33738e7b2b0b78fd (patch) | |
tree | b9f0fd8b74f61032ae7f27a542bae273a987ecde /src/CabalHelper/Compiletime/Cabal.hs | |
parent | 2f9523feb2e108dcb731e08ec467ad06edecdd39 (diff) |
Make compilerVersion accessor project-scope for V1 projects
Diffstat (limited to 'src/CabalHelper/Compiletime/Cabal.hs')
-rw-r--r-- | src/CabalHelper/Compiletime/Cabal.hs | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/CabalHelper/Compiletime/Cabal.hs b/src/CabalHelper/Compiletime/Cabal.hs index 69817c7..17f4d7f 100644 --- a/src/CabalHelper/Compiletime/Cabal.hs +++ b/src/CabalHelper/Compiletime/Cabal.hs @@ -20,11 +20,12 @@ Description : Cabal library source unpacking License : GPL-3 -} -{-# LANGUAGE DeriveFunctor, ViewPatterns, CPP #-} +{-# LANGUAGE DeriveFunctor, ViewPatterns, OverloadedStrings, CPP #-} module CabalHelper.Compiletime.Cabal where import Data.Char +import Control.Exception import Data.List import Data.Maybe import Data.Time.Calendar @@ -34,13 +35,15 @@ import Data.Version import System.Directory import System.Exit import System.FilePath +import System.IO import Text.Printf - +import qualified Data.ByteString as BS +import qualified Data.ByteString.Char8 as BS8 import CabalHelper.Compiletime.Types import CabalHelper.Compiletime.Process -import CabalHelper.Shared.Common (replace, parseVer, parseVerMay) +import CabalHelper.Shared.Common (replace, parseVer, parseVerMay, parsePkgIdBS) type UnpackedCabalVersion = CabalVersion' (CommitId, CabalSourceDir) type ResolvedCabalVersion = CabalVersion' CommitId @@ -259,3 +262,18 @@ findCabalFile pkgdir = do bultinCabalVersion :: Version bultinCabalVersion = parseVer VERSION_Cabal + +readSetupConfigHeader :: FilePath -> IO (Maybe UnitHeader) +readSetupConfigHeader file = bracket (openFile file ReadMode) hClose $ \h -> do + parseSetupHeader <$> BS.hGetLine h + +parseSetupHeader :: BS.ByteString -> Maybe UnitHeader +parseSetupHeader header = case BS8.words header of + ["Saved", "package", "config", "for", pkgId , + "written", "by", setupId, + "using", compId] + -> UnitHeader + <$> parsePkgIdBS pkgId + <*> parsePkgIdBS setupId + <*> parsePkgIdBS compId + _ -> Nothing |