move annex.numcopies parsing into withNumCopies

This commit is contained in:
Joey Hess 2011-09-15 16:24:47 -04:00
parent d036cd590f
commit 456b45b9b3
5 changed files with 16 additions and 25 deletions

View file

@ -59,9 +59,6 @@ type CommandStartKey = Key -> CommandStart
type BackendFile = (FilePath, Maybe (Backend Annex))
type CommandSeekBackendFiles = CommandStartBackendFile -> CommandSeek
type CommandStartBackendFile = BackendFile -> CommandStart
type AttrFile = (FilePath, String)
type CommandSeekAttrFiles = CommandStartAttrFile -> CommandSeek
type CommandStartAttrFile = AttrFile -> CommandStart
type CommandSeekNothing = CommandStart -> CommandSeek
type CommandStartNothing = CommandStart
@ -129,14 +126,18 @@ withFilesInGit a params = do
repo <- Annex.gitRepo
files <- liftIO $ runPreserveOrder (LsFiles.inRepo repo) params
liftM (map a) $ filterFiles files
withAttrFilesInGit :: String -> CommandSeekAttrFiles
withAttrFilesInGit :: String -> ((FilePath, String) -> CommandStart) -> CommandSeek
withAttrFilesInGit attr a params = do
repo <- Annex.gitRepo
files <- liftIO $ runPreserveOrder (LsFiles.inRepo repo) params
files' <- filterFiles files
liftM (map a) $ liftIO $ Git.checkAttr repo attr files'
withNumCopies :: CommandSeekAttrFiles
withNumCopies = withAttrFilesInGit "annex.numcopies"
withNumCopies :: (FilePath -> Maybe Int -> CommandStart) -> CommandSeek
withNumCopies a params = withAttrFilesInGit "annex.numcopies" go params
where
go (file, v) = do
let numcopies = readMaybe v
a file numcopies
withBackendFilesInGit :: CommandSeekBackendFiles
withBackendFilesInGit a params = do
repo <- Annex.gitRepo

View file

@ -9,7 +9,6 @@ module Command.Copy where
import Command
import qualified Command.Move
import Utility
command :: [Command]
command = [repoCommand "copy" paramPaths seek
@ -20,9 +19,7 @@ seek = [withNumCopies start]
-- A copy is just a move that does not delete the source file.
-- However, --auto mode avoids unnecessary copies.
start :: CommandStartAttrFile
start (file, attr) = isAnnexed file $ \(key, _) ->
start :: FilePath -> Maybe Int -> CommandStart
start file numcopies = isAnnexed file $ \(key, _) ->
autoCopies key (<) numcopies $
Command.Move.start False file
where
numcopies = readMaybe attr

View file

@ -14,7 +14,6 @@ import LocationLog
import Types
import Content
import Messages
import Utility
import Utility.Conditional
import Trust
import Config
@ -28,16 +27,14 @@ seek = [withNumCopies start]
{- Indicates a file's content is not wanted anymore, and should be removed
- if it's safe to do so. -}
start :: CommandStartAttrFile
start (file, attr) = isAnnexed file $ \(key, _) -> do
start :: FilePath -> Maybe Int -> CommandStart
start file numcopies = isAnnexed file $ \(key, _) -> do
present <- inAnnex key
if present
then autoCopies key (>) numcopies $ do
showStart "drop" file
next $ perform key numcopies
else stop
where
numcopies = readMaybe attr
perform :: Key -> Maybe Int -> CommandPerform
perform key numcopies = do

View file

@ -20,7 +20,6 @@ import qualified Types.Key
import UUID
import Types
import Messages
import Utility
import Content
import LocationLog
import Locations
@ -35,10 +34,10 @@ command = [repoCommand "fsck" paramPaths seek "check for problems"]
seek :: [CommandSeek]
seek = [withNumCopies start]
start :: CommandStartAttrFile
start (file, attr) = notBareRepo $ isAnnexed file $ \(key, backend) -> do
start :: FilePath -> Maybe Int -> CommandStart
start file numcopies = notBareRepo $ isAnnexed file $ \(key, backend) -> do
showStart "fsck" file
next $ perform key file backend $ readMaybe attr
next $ perform key file backend numcopies
perform :: Key -> FilePath -> Backend Annex -> Maybe Int -> CommandPerform
perform key file backend numcopies = do

View file

@ -13,7 +13,6 @@ import qualified Remote
import Types
import Content
import Messages
import Utility
import qualified Command.Move
command :: [Command]
@ -23,8 +22,8 @@ command = [repoCommand "get" paramPaths seek
seek :: [CommandSeek]
seek = [withNumCopies start]
start :: CommandStartAttrFile
start (file, attr) = isAnnexed file $ \(key, _) -> do
start :: FilePath -> Maybe Int -> CommandStart
start file numcopies = isAnnexed file $ \(key, _) -> do
inannex <- inAnnex key
if inannex
then stop
@ -37,8 +36,6 @@ start (file, attr) = isAnnexed file $ \(key, _) -> do
-- get --from = copy --from
src <- Remote.byName name
next $ Command.Move.fromPerform src False key
where
numcopies = readMaybe attr
perform :: Key -> CommandPerform
perform key = do