2010-11-15 22:06:21 +00:00
|
|
|
{- git-annex command
|
|
|
|
-
|
2015-01-21 16:50:09 +00:00
|
|
|
- Copyright 2010,2012 Joey Hess <id@joeyh.name>
|
2010-11-15 22:06:21 +00:00
|
|
|
-
|
|
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
|
|
-}
|
|
|
|
|
|
|
|
module Command.DropUnused where
|
|
|
|
|
2011-10-05 20:02:51 +00:00
|
|
|
import Common.Annex
|
2010-11-15 22:06:21 +00:00
|
|
|
import Command
|
|
|
|
import qualified Annex
|
|
|
|
import qualified Command.Drop
|
2011-04-03 00:59:41 +00:00
|
|
|
import qualified Remote
|
2011-06-30 17:16:57 +00:00
|
|
|
import qualified Git
|
2013-07-03 19:26:59 +00:00
|
|
|
import Command.Unused (withUnusedMaps, UnusedMaps(..), startUnused)
|
2015-04-30 18:02:56 +00:00
|
|
|
import Annex.NumCopies
|
2011-04-29 17:59:00 +00:00
|
|
|
|
2015-07-08 16:33:27 +00:00
|
|
|
cmd :: Command
|
|
|
|
cmd = withOptions [Command.Drop.dropFromOption] $
|
2015-07-08 19:08:02 +00:00
|
|
|
command "dropunused" SectionMaintenance
|
|
|
|
"drop unused file content"
|
|
|
|
(paramRepeating paramNumRange) (withParams seek)
|
2010-12-30 19:06:26 +00:00
|
|
|
|
2015-07-08 19:08:02 +00:00
|
|
|
seek :: CmdParams -> CommandSeek
|
2014-01-21 21:08:49 +00:00
|
|
|
seek ps = do
|
|
|
|
numcopies <- getNumCopies
|
|
|
|
withUnusedMaps (start numcopies) ps
|
2012-05-02 17:15:19 +00:00
|
|
|
|
2014-01-21 21:08:49 +00:00
|
|
|
start :: NumCopies -> UnusedMaps -> Int -> CommandStart
|
2014-02-26 20:52:56 +00:00
|
|
|
start numcopies = startUnused "dropunused" (perform numcopies) (performOther gitAnnexBadLocation) (performOther gitAnnexTmpObjectLocation)
|
2011-04-03 00:59:41 +00:00
|
|
|
|
2014-01-21 21:08:49 +00:00
|
|
|
perform :: NumCopies -> Key -> CommandPerform
|
|
|
|
perform numcopies key = maybe droplocal dropremote =<< Remote.byNameWithUUID =<< from
|
2012-11-12 05:05:04 +00:00
|
|
|
where
|
|
|
|
dropremote r = do
|
|
|
|
showAction $ "from " ++ Remote.name r
|
2014-03-29 19:20:55 +00:00
|
|
|
Command.Drop.performRemote key Nothing numcopies r
|
2014-03-22 19:01:48 +00:00
|
|
|
droplocal = Command.Drop.performLocal key Nothing numcopies Nothing
|
2014-01-26 20:25:55 +00:00
|
|
|
from = Annex.getField $ optionName Command.Drop.dropFromOption
|
2011-04-03 00:59:41 +00:00
|
|
|
|
2011-11-08 19:34:10 +00:00
|
|
|
performOther :: (Key -> Git.Repo -> FilePath) -> Key -> CommandPerform
|
2011-04-29 17:59:00 +00:00
|
|
|
performOther filespec key = do
|
2011-11-08 19:34:10 +00:00
|
|
|
f <- fromRepo $ filespec key
|
2012-06-06 17:13:13 +00:00
|
|
|
liftIO $ nukeFile f
|
2011-05-15 06:02:46 +00:00
|
|
|
next $ return True
|