aboutsummaryrefslogtreecommitdiff
path: root/Assistant/Ssh.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-02-26 13:04:37 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-02-26 13:04:37 -0400
commit9816398fadebf9f1a70b51b21c2d8a6bd9e8caa4 (patch)
tree6cef77b5af56432294a2592f36be627ce18b60ed /Assistant/Ssh.hs
parentc88f2afd3a7b811e7078c9e66d47431757d2b3df (diff)
webapp: Display any error message from git init if it fails to create a repository.
Diffstat (limited to 'Assistant/Ssh.hs')
-rw-r--r--Assistant/Ssh.hs32
1 files changed, 2 insertions, 30 deletions
diff --git a/Assistant/Ssh.hs b/Assistant/Ssh.hs
index 753babad4..93d567ce4 100644
--- a/Assistant/Ssh.hs
+++ b/Assistant/Ssh.hs
@@ -61,36 +61,8 @@ genSshRepoName host dir
| otherwise = makeLegalName $ host ++ "_" ++ dir
{- The output of ssh, including both stdout and stderr. -}
-sshTranscript :: [String] -> String -> IO (String, Bool)
-sshTranscript opts input = do
- (readf, writef) <- createPipe
- readh <- fdToHandle readf
- writeh <- fdToHandle writef
- (Just inh, _, _, pid) <- createProcess $
- (proc "ssh" opts)
- { std_in = CreatePipe
- , std_out = UseHandle writeh
- , std_err = UseHandle writeh
- }
- hClose writeh
-
- -- fork off a thread to start consuming the output
- transcript <- hGetContents readh
- outMVar <- newEmptyMVar
- _ <- forkIO $ E.evaluate (length transcript) >> putMVar outMVar ()
-
- -- now write and flush any input
- unless (null input) $ do
- hPutStr inh input
- hFlush inh
- hClose inh -- done with stdin
-
- -- wait on the output
- takeMVar outMVar
- hClose readh
-
- ok <- checkSuccessProcess pid
- return (transcript, ok)
+sshTranscript :: [String] -> (Maybe String) -> IO (String, Bool)
+sshTranscript opts input = processTranscript "ssh" opts input
{- Ensure that the ssh public key doesn't include any ssh options, like
- command=foo, or other weirdness -}