Agda-2.3.2.2: src/pkg/Interface/Command/Register.hs
{-# LANGUAGE OverloadedStrings #-}
module Interface.Command.Register where
-- FIXME: Proper Exports
-- Standard Library Imports
import Control.Applicative
import qualified Data.ByteString.Char8
as BS
import qualified Distribution.ParseUtils
as Cabal
import qualified Distribution.InstalledPackageInfo
as Cabal
import System.Environment
-- import qualified Distribution.Text
-- as Cabal
-- External Library Imports
import qualified Agda.Packaging.Config
as Agda
import qualified Agda.Packaging.Database
as Agda
import qualified Agda.Packaging.Monad
as Agda
import qualified Agda.Packaging.Types
as Agda
-- Local Library Imports
import Interface.Exit
import Interface.Options
--import Utils
--------------------------------------------------------------------------------
envRegex :: BS.ByteString
envRegex = BS.pack "\\${[a-zA-Z0-9_]+}"
envSubst :: BS.ByteString -> IO BS.ByteString
envSubst s
| ("${" `BS.isPrefixOf`) s
&& ("}" `BS.isSuffixOf`) s = BS.pack <$> result
| otherwise = return s
where
result = getEnv
$ BS.unpack
$ BS.takeWhile (/= '}')
$ BS.drop 2 s
registerPkg :: FilePath -> Agda.AgdaPkg Opt ()
registerPkg fileName = undefined
-- FIXME: rewrite
{-
do
npkgDBs <- Agda.asks Agda.configPkgDBStack
case npkgDBs of
[] -> undefined
dbToModify:_ -> do
contents <- Agda.liftIO $
if fileName == "-" then
BS.getContents
else
BS.readFile fileName
expandedContents <- return contents
pkgInfo <- parsePkgInfo expandedContents
let cond pkgInfo' = Cabal.installedPackageId pkgInfo'
/= Cabal.installedPackageId pkgInfo
newDB = pkgInfo : filter cond $ Agda.db dbToModify
Agda.writePkgDBToFile newDB $ Agda.dbName dbToModify
where
parsePkgInfo :: BS.ByteString
-> Agda.AgdaPkg Opt Cabal.InstalledPackageInfo
parsePkgInfo contents =
case Cabal.parseInstalledPackageInfo $ BS.unpack contents of
Cabal.ParseFailed err ->
case Cabal.locatedErrorMsg err of
(Nothing, s) -> Agda.liftIO $ die s
(Just l , s) -> Agda.liftIO $ die $ show l ++ ": " ++ s
Cabal.ParseOk _warns res -> do
return res
-}