haskus-system-build-1.0: src/apps/Haskus/Apps/System/Build/Stack.hs
{-# LANGUAGE LambdaCase #-}
module Haskus.Apps.System.Build.Stack
( stackGetBinPath
, stackGetResolver
, stackGetGHCVersion
, stackBuild
)
where
import System.Process
import System.FilePath
import Data.List
import Haskus.Apps.System.Build.Utils
import Haskus.Utils.Flow
-- | Get GHC version (using stack exec)
stackGetGHCVersion :: IO String
stackGetGHCVersion =
-- FIXME
last . words <$> readProcess "stack" ["exec", "--", "ghc", "--version"] ""
-- | Get stack resolver
stackGetResolver :: IO String
stackGetResolver =
-- FIXME
last . words . head . filter ("resolver:" `isPrefixOf`) . lines <$> readFile "stack.yaml"
stackGetBinPath :: FilePath -> IO FilePath
stackGetBinPath x = do
p <- readProcess "stack" ["path", "--local-install-root"] ""
return $ init p </> "bin" </> x
stackBuild :: IO ()
stackBuild = do
showStep "Configuring Stack..."
shellWaitErr "stack setup"
<| failWith "Error during `stack setup`"
showStep "Building with Stack..."
shellWaitErr "stack build"
<| failWith "Error during `stack build`"