summaryrefslogtreecommitdiff
path: root/Command/RecvKey.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-12-31 13:39:30 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-12-31 13:39:43 -0400
commit60df4e5728b8af804f06c39ef3b897af12247ceb (patch)
tree682d1443d4d8e27f63f87ee9e0ae2f5629538385 /Command/RecvKey.hs
parentf38aa3e83abb251a88362dbaf6e8fbddd477fa53 (diff)
git-annex-shell is complete
still not used
Diffstat (limited to 'Command/RecvKey.hs')
-rw-r--r--Command/RecvKey.hs38
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