summaryrefslogtreecommitdiff
path: root/Command/Lock.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-11-11 17:58:55 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-11-11 17:58:55 -0400
commitce62f5abf16e578f9f4b86cd140ea2ddfb1e4217 (patch)
treed50e4c639c2eb5a16ff292827378608f4ee6d68d /Command/Lock.hs
parentb5ce88dd2aa2d6cc5eac6fd014f94d387c38bce0 (diff)
rework command dispatching for add and pre-commit
Both subcommands do two different operations on different sets of files, so allowing a subcommand to perform a list of operations cleans things up.
Diffstat (limited to 'Command/Lock.hs')
-rw-r--r--Command/Lock.hs28
1 files changed, 4 insertions, 24 deletions
diff --git a/Command/Lock.hs b/Command/Lock.hs
index 6ae59221c..f03d6b6c8 100644
--- a/Command/Lock.hs
+++ b/Command/Lock.hs
@@ -9,23 +9,17 @@ module Command.Lock where
import Control.Monad.State (liftIO)
import System.Directory
-import System.Posix.Files
-import Types
import Command
import Messages
import qualified Annex
import qualified GitRepo as Git
{- Undo unlock -}
-start :: SubCmdStartString
-start file = do
- locked <- isLocked file
- if locked
- then return Nothing
- else do
- showStart "lock" file
- return $ Just $ perform file
+start :: SubCmdStartBackendFile
+start (file, _) = do
+ showStart "lock" file
+ return $ Just $ perform file
perform :: FilePath -> SubCmdPerform
perform file = do
@@ -36,17 +30,3 @@ perform file = do
-- checkout the symlink
liftIO $ Git.run g ["checkout", "--", file]
return $ Just $ return True -- no cleanup needed
-
-{- Checks if a file is unlocked for edit. -}
-isLocked :: FilePath -> Annex Bool
-isLocked file = do
- -- check if it's a symlink first, as that's cheapest
- s <- liftIO $ getSymbolicLinkStatus file
- if (isSymbolicLink s)
- then return True -- Symlinked files are always locked.
- else do
- -- Not a symlink, so see if the type has changed,
- -- if so it is presumed to have been unlocked.
- g <- Annex.gitRepo
- typechanged <- liftIO $ Git.typeChangedFiles g file
- return $ not $ elem file typechanged