diff options
author | Joey Hess <joey@kitenet.net> | 2012-06-05 19:51:03 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-06-05 19:51:03 -0400 |
commit | d3cee987caf20b309334b37bd1b89e8b9115cf0a (patch) | |
tree | 8c1a244545efed3b2fd9e48ea28faac12aa326fe /Command | |
parent | 77188ff04d8d4d42b25daac9eeffbf10d8b663ac (diff) |
separate source of content from the filename associated with the key when generating a key
This already made migrate's code a lot simpler.
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Add.hs | 7 | ||||
-rw-r--r-- | Command/AddUrl.hs | 7 | ||||
-rw-r--r-- | Command/Migrate.hs | 26 |
3 files changed, 15 insertions, 25 deletions
diff --git a/Command/Add.hs b/Command/Add.hs index ef839b2a3..7029a9c16 100644 --- a/Command/Add.hs +++ b/Command/Add.hs @@ -12,7 +12,7 @@ import Annex.Exception import Command import qualified Annex import qualified Annex.Queue -import qualified Backend +import Backend import Logs.Location import Annex.Content import Utility.Touch @@ -46,8 +46,9 @@ start file = notBareRepo $ ifAnnexed file fixup add perform :: FilePath -> CommandPerform perform file = do - backend <- Backend.chooseBackend file - Backend.genKey file backend >>= go + let source = KeySource { keyFilename = file, contentLocation = file} + backend <- chooseBackend file + genKey source backend >>= go where go Nothing = stop go (Just (key, _)) = do diff --git a/Command/AddUrl.hs b/Command/AddUrl.hs index 089606e85..87b24149d 100644 --- a/Command/AddUrl.hs +++ b/Command/AddUrl.hs @@ -11,7 +11,7 @@ import Network.URI import Common.Annex import Command -import qualified Backend +import Backend import qualified Command.Add import qualified Annex import qualified Backend.URL @@ -72,8 +72,9 @@ download url file = do tmp <- fromRepo $ gitAnnexTmpLocation dummykey liftIO $ createDirectoryIfMissing True (parentDir tmp) stopUnless (downloadUrl [url] tmp) $ do - backend <- Backend.chooseBackend file - k <- Backend.genKey tmp backend + backend <- chooseBackend file + let source = KeySource { keyFilename = file, contentLocation = file} + k <- genKey source backend case k of Nothing -> stop Just (key, _) -> do diff --git a/Command/Migrate.hs b/Command/Migrate.hs index 6e28c4b52..29e664ce2 100644 --- a/Command/Migrate.hs +++ b/Command/Migrate.hs @@ -9,7 +9,7 @@ module Command.Migrate where import Common.Annex import Command -import qualified Backend +import Backend import qualified Types.Key import Annex.Content import qualified Command.ReKey @@ -23,14 +23,14 @@ seek = [withFilesInGit $ whenAnnexed start] start :: FilePath -> (Key, Backend) -> CommandStart start file (key, oldbackend) = do exists <- inAnnex key - newbackend <- choosebackend =<< Backend.chooseBackend file + newbackend <- choosebackend =<< chooseBackend file if (newbackend /= oldbackend || upgradableKey key) && exists then do showStart "migrate" file next $ perform file key newbackend else stop where - choosebackend Nothing = Prelude.head <$> Backend.orderedList + choosebackend Nothing = Prelude.head <$> orderedList choosebackend (Just backend) = return backend {- Checks if a key is upgradable to a newer representation. -} @@ -40,25 +40,13 @@ upgradableKey key = isNothing $ Types.Key.keySize key {- Store the old backend's key in the new backend - The old backend's key is not dropped from it, because there may - - be other files still pointing at that key. - - - - Use the same filename as the file for the temp file name, to support - - backends that allow the filename to influence the keys they - - generate. - -} + - be other files still pointing at that key. -} perform :: FilePath -> Key -> Backend -> CommandPerform perform file oldkey newbackend = maybe stop go =<< genkey where go newkey = stopUnless (Command.ReKey.linkKey oldkey newkey) $ next $ Command.ReKey.cleanup file oldkey newkey genkey = do - src <- inRepo $ gitAnnexLocation oldkey - tmp <- fromRepo gitAnnexTmpDir - let tmpfile = tmp </> takeFileName file - cleantmp tmpfile - liftIO $ createLink src tmpfile - newkey <- liftM fst <$> - Backend.genKey tmpfile (Just newbackend) - cleantmp tmpfile - return newkey - cleantmp t = liftIO $ whenM (doesFileExist t) $ removeFile t + content <- inRepo $ gitAnnexLocation oldkey + let source = KeySource { keyFilename = file, contentLocation = content } + liftM fst <$> genKey source (Just newbackend) |