For expire, the normal output is unchanged, but the --json output includes the uuid in machine parseable form. Which could be very useful for this somewhat obscure command. That needed ActionItemUUID to be implemented, which seemed like a lot of work, but then --- I had been going to skip implementing them for trust, untrust, dead, semitrust, and describe, but putting the uuid in the json is useful information, it tells what uuid git-annex picked given the input. It was not hard to support these once ActionItemUUID was implemented. Sponsored-By: the NIH-funded NICEMAN (ReproNim TR&D3) project
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Haskell
		
	
	
	
	
	
{- git-annex command
 | 
						|
 -
 | 
						|
 - Copyright 2010-2023 Joey Hess <id@joeyh.name>
 | 
						|
 -
 | 
						|
 - Licensed under the GNU AGPL version 3 or higher.
 | 
						|
 -}
 | 
						|
 | 
						|
module Command.Trust where
 | 
						|
 | 
						|
import Command
 | 
						|
import qualified Remote
 | 
						|
import qualified Annex
 | 
						|
import Types.TrustLevel
 | 
						|
import Logs.Trust
 | 
						|
import Logs.Group
 | 
						|
 | 
						|
import qualified Data.Set as S
 | 
						|
 | 
						|
cmd :: Command
 | 
						|
cmd = withAnnexOptions [jsonOptions] $
 | 
						|
	command "trust" SectionSetup "trust a repository"
 | 
						|
		(paramRepeating paramRepository) (withParams seek)
 | 
						|
 | 
						|
seek :: CmdParams -> CommandSeek
 | 
						|
seek = trustCommand "trust" Trusted
 | 
						|
 | 
						|
trustCommand :: String -> TrustLevel -> CmdParams -> CommandSeek
 | 
						|
trustCommand _ _ [] = giveup "no repository name specified"
 | 
						|
trustCommand c level ps = withStrings (commandAction . start) ps
 | 
						|
  where
 | 
						|
	start name = do
 | 
						|
		u <- Remote.nameToUUID name
 | 
						|
		let si = SeekInput [name]
 | 
						|
		starting c (ActionItemUUID u (UnquotedString name)) si (perform name u)
 | 
						|
	perform name uuid = do
 | 
						|
		when (level >= Trusted) $
 | 
						|
			unlessM (Annex.getRead Annex.force) $
 | 
						|
				giveup $ trustedNeedsForce name
 | 
						|
		trustSet uuid level
 | 
						|
		when (level == DeadTrusted) $
 | 
						|
			groupSet uuid S.empty
 | 
						|
		l <- lookupTrust uuid
 | 
						|
		when (l /= level) $
 | 
						|
			warning $ UnquotedString $ "This remote's trust level is overridden to " ++ showTrustLevel l ++ "."
 | 
						|
		next $ return True
 | 
						|
 | 
						|
trustedNeedsForce :: String -> String
 | 
						|
trustedNeedsForce name = unwords
 | 
						|
	[ "Trusting a repository can lead to data loss."
 | 
						|
	, "If you're sure you know what you're doing, use --force to"
 | 
						|
	, "make this take effect."
 | 
						|
	, "If you choose to do so, bear in mind that any time you drop"
 | 
						|
	, "content from " ++ name ++ ", you will risk losing data."
 | 
						|
	]
 |