diff options
Diffstat (limited to 'Command/RecvKey.hs')
-rw-r--r-- | Command/RecvKey.hs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Command/RecvKey.hs b/Command/RecvKey.hs new file mode 100644 index 000000000..3232010d4 --- /dev/null +++ b/Command/RecvKey.hs @@ -0,0 +1,38 @@ +{- git-annex command + - + - Copyright 2010 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Command.RecvKey where + +import Control.Monad (when) +import Control.Monad.State (liftIO) +import System.Exit + +import Command +import Types +import Core +import qualified Backend +import RsyncFile + +command :: [Command] +command = [Command "recvkey" paramKey seek + "runs rsync in server mode to receive content"] + +seek :: [CommandSeek] +seek = [withKeys start] + +start :: CommandStartString +start keyname = do + backends <- Backend.list + let key = genKey (head backends) keyname + present <- inAnnex key + when present $ + error "key is already present in annex" + + ok <- getViaTmp key (liftIO . rsyncServerReceive) + if ok + then return Nothing + else liftIO exitFailure |