aboutsummaryrefslogtreecommitdiff
path: root/src/CabalHelper/Compiletime/Cabal.hs
diff options
context:
space:
mode:
authorDaniel Gröber <dxld@darkboxed.org>2019-03-31 23:31:44 +0200
committerDaniel Gröber <dxld@darkboxed.org>2019-04-01 20:37:54 +0200
commite7ff295ff2f2ed1e7682bd1d33738e7b2b0b78fd (patch)
treeb9f0fd8b74f61032ae7f27a542bae273a987ecde /src/CabalHelper/Compiletime/Cabal.hs
parent2f9523feb2e108dcb731e08ec467ad06edecdd39 (diff)
Make compilerVersion accessor project-scope for V1 projects
Diffstat (limited to 'src/CabalHelper/Compiletime/Cabal.hs')
-rw-r--r--src/CabalHelper/Compiletime/Cabal.hs24
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