craft-0.0.0.1: src/Craft/Run/Local.hs
module Craft.Run.Local where
import Control.Lens
import qualified Control.Monad.Trans as Trans
import qualified Data.ByteString as BS
import qualified Data.Map.Strict as Map
import System.Process hiding (readCreateProcessWithExitCode,
readProcessWithExitCode)
import Craft.Run.Internal
import Craft.Types
runLocal :: CraftRunner
runLocal =
CraftRunner
{ runExec =
\ce command args ->
let p = localProc ce command args
in execProc p
, runExec_ =
\ce command args ->
let p = localProc ce command args
in execProc_ (showProc p) p
, runFileRead =
Trans.lift . BS.readFile . fromAbsFile
, runFileWrite =
\fp content ->
Trans.lift (BS.writeFile (fromAbsFile fp) content)
, runSourceFile =
\src dest ->
let p = (proc "/bin/cp" [src, (fromAbsFile dest)])
{ env = Nothing
, cwd = Nothing
, close_fds = True
, create_group = True
, delegate_ctlc = False
}
in execProc_ (showProc p) p
}
localProc :: CraftEnv -> Command -> Args -> CreateProcess
localProc ce prog args =
(proc prog args)
{ env = Just . Map.toList $ ce^.craftExecEnv
, cwd = Just . fromAbsDir $ ce^.craftExecCWD
, close_fds = True
, create_group = True
, delegate_ctlc = False
}