0 | module Control.RIO.Sys
2 | import Control.RIO.App
3 | import Control.RIO.File
19 | printErr : SysErr -> String
20 | printErr (MkSE cmd err) =
21 | "Command terminated with error code \{show err}: \{cmd}"
27 | sys_ : String -> IO (Either SysErr ())
28 | run_ : String -> IO (Either SysErr String)
35 | sys : Sys => Has SysErr xs => String -> App xs ()
36 | sys cmd = injectIO (sys_ %search cmd)
39 | run : Sys => Has SysErr xs => String -> App xs String
40 | run cmd = injectIO (run_ %search cmd)
46 | sysImpl : String -> IO (Either SysErr ())
48 | 0 <- system cmd | n => pure (Left $
MkSE cmd n)
52 | runImpl : String -> IO (Either SysErr String)
54 | (res,0) <- System.run cmd | (_,n) => pure (Left $
MkSE cmd n)
59 | system = MkSys sysImpl runImpl
67 | rmDir : Sys => FS => Has SysErr xs => Path t -> App xs ()
68 | rmDir dir = when !(exists dir) $
sys "rm -rf \{dir}"