checkpresentkey: New plumbing command to check if a key can be verified to be present on a remote.

This commit is contained in:
Joey Hess 2015-03-20 11:44:46 -04:00
parent 50ef4105e3
commit e6158130c6
4 changed files with 49 additions and 0 deletions

View file

@ -30,6 +30,7 @@ import qualified Command.TransferKey
import qualified Command.TransferKeys import qualified Command.TransferKeys
import qualified Command.SetPresentKey import qualified Command.SetPresentKey
import qualified Command.ReadPresentKey import qualified Command.ReadPresentKey
import qualified Command.CheckPresentKey
import qualified Command.ReKey import qualified Command.ReKey
import qualified Command.MetaData import qualified Command.MetaData
import qualified Command.View import qualified Command.View
@ -158,6 +159,7 @@ cmds = concat
, Command.TransferKeys.cmd , Command.TransferKeys.cmd
, Command.SetPresentKey.cmd , Command.SetPresentKey.cmd
, Command.ReadPresentKey.cmd , Command.ReadPresentKey.cmd
, Command.CheckPresentKey.cmd
, Command.ReKey.cmd , Command.ReKey.cmd
, Command.MetaData.cmd , Command.MetaData.cmd
, Command.View.cmd , Command.View.cmd

View file

@ -0,0 +1,36 @@
{- git-annex command
-
- Copyright 2015 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Command.CheckPresentKey where
import Common.Annex
import Command
import Types.Key
import qualified Remote
import Annex
import Types.Messages
cmd :: [Command]
cmd = [noCommit $ command "checkpresentkey" (paramPair paramKey paramRemote) seek
SectionPlumbing "check if key is present in remote"]
seek :: CommandSeek
seek = withWords start
start :: [String] -> CommandStart
start (ks:rn:[]) = do
setOutput QuietOutput
maybe (error "Unknown remote") (go <=< flip Remote.hasKey k)
=<< Remote.byNameWithUUID (Just rn)
where
k = fromMaybe (error "bad key") (file2key ks)
go (Right True) = liftIO exitSuccess
go (Right False) = liftIO exitFailure
go (Left e) = liftIO $ do
hPutStrLn stderr e
exitWith $ ExitFailure 100
start _ = error "Wrong number of parameters"

2
debian/changelog vendored
View file

@ -1,6 +1,8 @@
git-annex (5.20150318) UNRELEASED; urgency=medium git-annex (5.20150318) UNRELEASED; urgency=medium
* readpresentkey: New plumbing command for checking location log. * readpresentkey: New plumbing command for checking location log.
* checkpresentkey: New plumbing command to check if a key can be verified
to be present on a remote.
-- Joey Hess <id@joeyh.name> Thu, 19 Mar 2015 17:05:32 -0400 -- Joey Hess <id@joeyh.name> Thu, 19 Mar 2015 17:05:32 -0400

View file

@ -1010,6 +1010,15 @@ subdirectories).
It exits 0 if the key is recorded to be present and 1 if not. It exits 0 if the key is recorded to be present and 1 if not.
* `checkpresentkey key remote`
This plumbing-level command verifies if the specified key's content
is present in the specified remote.
Exits 0 if the content is verified present, or 1 if it is verified to not
be present. If there is a problem checking the remote, the special
exit code 100 is used, and an error message is output to stderr.
* `rekey [file key ...]` * `rekey [file key ...]`
This plumbing-level command is similar to migrate, but you specify This plumbing-level command is similar to migrate, but you specify