From 3d3e1c4c25f4bbefd0f5e3f445444f3293875a93 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 31 Oct 2011 15:18:41 -0400 Subject: better command name --- Command/Reinject.hs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ Command/SetContent.hs | 51 --------------------------------------------------- 2 files changed, 51 insertions(+), 51 deletions(-) create mode 100644 Command/Reinject.hs delete mode 100644 Command/SetContent.hs (limited to 'Command') diff --git a/Command/Reinject.hs b/Command/Reinject.hs new file mode 100644 index 000000000..63309aa52 --- /dev/null +++ b/Command/Reinject.hs @@ -0,0 +1,51 @@ +{- git-annex command + - + - Copyright 2011 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Command.Reinject where + +import Common.Annex +import Command +import Logs.Location +import Annex.Content +import qualified Command.Fsck + +def :: [Command] +def = [command "reinject" (paramPair paramPath paramPath) seek + "sets content of annexed file"] + +seek :: [CommandSeek] +seek = [withWords start] + +start :: [FilePath] -> CommandStart +start (src:dest:[]) = do + showStart "reinject" dest + next $ perform src dest +start _ = error "specify a src file and a dest file" + +perform :: FilePath -> FilePath -> CommandPerform +perform src dest = isAnnexed dest $ \(key, backend) -> do + unlessM (move key) $ error "mv failed!" + next $ cleanup key backend + where + -- the file might be on a different filesystem, + -- so mv is used rather than simply calling + -- moveToObjectDir; disk space is also + -- checked this way. + move key = getViaTmp key $ \tmp -> + if dest /= src + then liftIO $ boolSystem "mv" [File src, File tmp] + else return True + +cleanup :: Key -> Backend Annex -> CommandCleanup +cleanup key backend = do + logStatus key InfoPresent + + -- fsck the new content + size_ok <- Command.Fsck.checkKeySize key + backend_ok <- Command.Fsck.checkBackend backend key + + return $ size_ok && backend_ok diff --git a/Command/SetContent.hs b/Command/SetContent.hs deleted file mode 100644 index b63cc9119..000000000 --- a/Command/SetContent.hs +++ /dev/null @@ -1,51 +0,0 @@ -{- git-annex command - - - - Copyright 2011 Joey Hess - - - - Licensed under the GNU GPL version 3 or higher. - -} - -module Command.SetContent where - -import Common.Annex -import Command -import Logs.Location -import Annex.Content -import qualified Command.Fsck - -def :: [Command] -def = [command "setcontent" (paramPair paramPath paramPath) seek - "sets content of annexed file"] - -seek :: [CommandSeek] -seek = [withWords start] - -start :: [FilePath] -> CommandStart -start (src:dest:[]) = do - showStart "setcontent" dest - next $ perform src dest -start _ = error "specify a src file and a dest file" - -perform :: FilePath -> FilePath -> CommandPerform -perform src dest = isAnnexed dest $ \(key, backend) -> do - unlessM (move key) $ error "mv failed!" - next $ cleanup key backend - where - -- the file might be on a different filesystem, - -- so mv is used rather than simply calling - -- moveToObjectDir; disk space is also - -- checked this way. - move key = getViaTmp key $ \tmp -> - if dest /= src - then liftIO $ boolSystem "mv" [File src, File tmp] - else return True - -cleanup :: Key -> Backend Annex -> CommandCleanup -cleanup key backend = do - logStatus key InfoPresent - - -- fsck the new content - size_ok <- Command.Fsck.checkKeySize key - backend_ok <- Command.Fsck.checkBackend backend key - - return $ size_ok && backend_ok -- cgit v1.2.3