summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Mount.hs
diff options
context:
space:
mode:
authorJoey Hess2014-12-05 17:54:29 -0400
committerJoey Hess2014-12-05 17:54:29 -0400
commita7e71faaaa0ed2672b956691833ca6c3a3431189 (patch)
tree66c6a46c070f14a1bf1bdc7a49e4042bc49caffb /src/Propellor/Property/Mount.hs
parent5ae6a302df5c7bd71cd5dadb53e5bb5e710762b3 (diff)
forgot to add new Mount lib
Diffstat (limited to 'src/Propellor/Property/Mount.hs')
-rw-r--r--src/Propellor/Property/Mount.hs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Propellor/Property/Mount.hs b/src/Propellor/Property/Mount.hs
new file mode 100644
index 00000000..f4d10302
--- /dev/null
+++ b/src/Propellor/Property/Mount.hs
@@ -0,0 +1,23 @@
+module Propellor.Property.Mount where
+
+import Propellor
+import Utility.SafeCommand
+
+type FsType = String
+type Source = String
+
+mountPoints :: IO [FilePath]
+mountPoints = lines <$> readProcess "findmnt" ["-rn", "--output", "target"]
+
+getFsType :: FilePath -> IO (Maybe FsType)
+getFsType mnt = catchDefaultIO Nothing $
+ headMaybe . lines
+ <$> readProcess "findmnt" ["-n", mnt, "--output", "fstype"]
+
+umountLazy :: FilePath -> IO ()
+umountLazy mnt =
+ unlessM (boolSystem "umount" [ Param "-l", Param mnt ]) $
+ errorMessage $ "failed unmounting " ++ mnt
+
+mount :: FsType -> Source -> FilePath -> IO Bool
+mount fs src mnt = boolSystem "mount" [Param "-t", Param fs, Param src, Param mnt]