summaryrefslogtreecommitdiff
path: root/Annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-13 03:20:05 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-13 03:20:05 -0400
commit4b801b265afa94b1219a1abb6e52e08e0790582a (patch)
treeda3d22915c84a116d78e807185eac1801a20b724 /Annex.hs
parentd1071bd1fe879abb3ebb229f9347f7855a697b8c (diff)
error handling
Diffstat (limited to 'Annex.hs')
-rw-r--r--Annex.hs34
1 files changed, 14 insertions, 20 deletions
diff --git a/Annex.hs b/Annex.hs
index 8a7b8d860..30ec0843a 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -45,10 +45,9 @@ startAnnex = do
- the annex directory and setting up the symlink pointing to its content. -}
annexFile :: State -> FilePath -> IO ()
annexFile state file = do
- -- TODO check if already annexed
- let alreadyannexed = Nothing
- case (alreadyannexed) of
- Just _ -> error $ "already annexed: " ++ file
+ r <- lookupFile file
+ case (r) of
+ Just _ -> error $ "already annexed " ++ file
Nothing -> do
checkLegal file
stored <- storeFile state file
@@ -84,16 +83,14 @@ annexFile state file = do
{- Inverse of annexFile. -}
unannexFile :: State -> FilePath -> IO ()
unannexFile state file = do
- -- TODO check if already annexed
- let alreadyannexed = Just 1
- case (alreadyannexed) of
+ r <- lookupFile file
+ case (r) of
Nothing -> error $ "not annexed " ++ file
- Just _ -> do
- key <- fileKey file
- dropped <- dropFile state key
- case (dropped) of
- Nothing -> return ()
- Just (key, backend) -> do
+ Just (key, backend) -> do
+ dropped <- dropFile state backend key
+ if (not dropped)
+ then error $ "backend refused to drop " ++ file
+ else do
let src = annexLocation state backend key
removeFile file
gitRun (repo state) ["rm", file]
@@ -110,20 +107,17 @@ unannexFile state file = do
{- Transfers the file from a remote. -}
annexGetFile :: State -> FilePath -> IO ()
annexGetFile state file = do
- -- TODO check if already annexed
- let alreadyannexed = Just 1
- case (alreadyannexed) of
+ r <- lookupFile file
+ case (r) of
Nothing -> error $ "not annexed " ++ file
- Just _ -> do
- key <- fileKey file
- backend <- fileBackend file
+ Just (key, backend) -> do
inannex <- inAnnex state backend key
if (inannex)
then return ()
else do
let dest = annexLocation state backend key
createDirectoryIfMissing True (parentDir dest)
- success <- retrieveFile state key dest
+ success <- retrieveFile state backend key dest
if (success)
then do
logStatus state key ValuePresent