This includes checking when dropping files that any required content configuration is satisfied. However, it does not yet include an active check on the required content; the location log is trusted when checking the required content expression.
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			Haskell
		
	
	
	
	
	
{- git-annex command
 | 
						|
 -
 | 
						|
 - Copyright 2010,2012 Joey Hess <joey@kitenet.net>
 | 
						|
 -
 | 
						|
 - Licensed under the GNU GPL version 3 or higher.
 | 
						|
 -}
 | 
						|
 | 
						|
module Command.DropUnused where
 | 
						|
 | 
						|
import Common.Annex
 | 
						|
import Command
 | 
						|
import qualified Annex
 | 
						|
import qualified Command.Drop
 | 
						|
import qualified Remote
 | 
						|
import qualified Git
 | 
						|
import Command.Unused (withUnusedMaps, UnusedMaps(..), startUnused)
 | 
						|
import Config.NumCopies
 | 
						|
 | 
						|
def :: [Command]
 | 
						|
def = [withOptions [Command.Drop.dropFromOption] $
 | 
						|
	command "dropunused" (paramRepeating paramNumRange)
 | 
						|
		seek SectionMaintenance "drop unused file content"]
 | 
						|
 | 
						|
seek :: CommandSeek
 | 
						|
seek ps = do
 | 
						|
	numcopies <- getNumCopies
 | 
						|
	withUnusedMaps (start numcopies) ps
 | 
						|
 | 
						|
start :: NumCopies -> UnusedMaps -> Int -> CommandStart
 | 
						|
start numcopies = startUnused "dropunused" (perform numcopies) (performOther gitAnnexBadLocation) (performOther gitAnnexTmpObjectLocation)
 | 
						|
 | 
						|
perform :: NumCopies -> Key -> CommandPerform
 | 
						|
perform numcopies key = maybe droplocal dropremote =<< Remote.byNameWithUUID =<< from
 | 
						|
  where
 | 
						|
	dropremote r = do
 | 
						|
		showAction $ "from " ++ Remote.name r
 | 
						|
		Command.Drop.performRemote key Nothing numcopies r
 | 
						|
	droplocal = Command.Drop.performLocal key Nothing numcopies Nothing
 | 
						|
	from = Annex.getField $ optionName Command.Drop.dropFromOption
 | 
						|
 | 
						|
performOther :: (Key -> Git.Repo -> FilePath) -> Key -> CommandPerform
 | 
						|
performOther filespec key = do
 | 
						|
	f <- fromRepo $ filespec key
 | 
						|
	liftIO $ nukeFile f
 | 
						|
	next $ return True
 |