summaryrefslogtreecommitdiff
path: root/Content.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Content.hs')
-rw-r--r--Content.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/Content.hs b/Content.hs
index dd0ea5ca1..99770f553 100644
--- a/Content.hs
+++ b/Content.hs
@@ -12,6 +12,7 @@ module Content (
logStatusFor,
getViaTmp,
getViaTmpUnchecked,
+ withTmp,
checkDiskSpace,
preventWrite,
allowWrite,
@@ -127,6 +128,17 @@ getViaTmpUnchecked key action = do
-- to resume its transfer
return False
+{- Creates a temp file, runs an action on it, and cleans up the temp file. -}
+withTmp :: Key -> (FilePath -> Annex a) -> Annex a
+withTmp key action = do
+ g <- Annex.gitRepo
+ let tmp = gitAnnexTmpLocation g key
+ liftIO $ createDirectoryIfMissing True (parentDir tmp)
+ res <- action tmp
+ tmp_exists <- liftIO $ doesFileExist tmp
+ when tmp_exists $ liftIO $ removeFile tmp
+ return res
+
{- Checks that there is disk space available to store a given key,
- throwing an error if not. -}
checkDiskSpace :: Key -> Annex ()