From 1ced111396e46137e9f0d85e2c22ee79c71e93b5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 18 Nov 2015 12:30:01 -0400 Subject: improve error message when special remote program cannot be run --- Remote/External.hs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'Remote') diff --git a/Remote/External.hs b/Remote/External.hs index 897a6a72b..45720d4a1 100644 --- a/Remote/External.hs +++ b/Remote/External.hs @@ -369,12 +369,8 @@ startExternal :: ExternalType -> Annex ExternalState startExternal externaltype = do errrelayer <- mkStderrRelayer liftIO $ do - (Just hin, Just hout, Just herr, pid) <- createProcess $ - (proc cmd []) - { std_in = CreatePipe - , std_out = CreatePipe - , std_err = CreatePipe - } + (Just hin, Just hout, Just herr, pid) <- + createProcess p `catchIO` runerr fileEncoding hin fileEncoding hout fileEncoding herr @@ -390,6 +386,13 @@ startExternal externaltype = do } where cmd = externalRemoteProgram externaltype + p = (proc cmd []) + { std_in = CreatePipe + , std_out = CreatePipe + , std_err = CreatePipe + } + + runerr _ = error ("Cannot run " ++ cmd ++ " -- Make sure it's in your PATH and is executable.") checkearlytermination Nothing = noop checkearlytermination (Just exitcode) = ifM (inPath cmd) -- cgit v1.2.3