summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assistant/Threads/Transferrer.hs20
-rw-r--r--Assistant/WebApp/DashBoard.hs2
-rw-r--r--Build/InstallDesktopFile.hs2
-rw-r--r--Command/Assistant.hs3
-rw-r--r--Locations/UserConfig.hs9
5 files changed, 21 insertions, 15 deletions
diff --git a/Assistant/Threads/Transferrer.hs b/Assistant/Threads/Transferrer.hs
index cb6f642bf..ae0adf300 100644
--- a/Assistant/Threads/Transferrer.hs
+++ b/Assistant/Threads/Transferrer.hs
@@ -18,6 +18,7 @@ import Logs.Location
import Annex.Content
import qualified Remote
import Types.Key
+import Locations.UserConfig
import System.Process (create_group)
@@ -30,23 +31,23 @@ maxTransfers = 1
{- Dispatches transfers from the queue. -}
transfererThread :: ThreadState -> DaemonStatusHandle -> TransferQueue -> TransferSlots -> IO ()
-transfererThread st dstatus transferqueue slots = go
+transfererThread st dstatus transferqueue slots = go =<< readProgramFile
where
- go = getNextTransfer transferqueue dstatus notrunning >>= handle
- handle Nothing = go
- handle (Just (t, info)) = do
+ go program = getNextTransfer transferqueue dstatus notrunning >>= handle program
+ handle program Nothing = go program
+ handle program (Just (t, info)) = do
ifM (runThreadState st $ shouldTransfer t info)
( do
debug thisThread [ "Transferring:" , show t ]
notifyTransfer dstatus
- transferThread dstatus slots t info inTransferSlot
+ transferThread dstatus slots t info inTransferSlot program
, do
debug thisThread [ "Skipping unnecessary transfer:" , show t ]
-- getNextTransfer added t to the
-- daemonstatus's transfer map.
void $ removeTransfer dstatus t
)
- go
+ go program
{- Skip transfers that are already running. -}
notrunning i = startedTime i == Nothing
@@ -79,8 +80,8 @@ shouldTransfer t info
- the transfer info; the thread will also be killed when a transfer is
- stopped, to avoid it displaying any alert about the transfer having
- failed. -}
-transferThread :: DaemonStatusHandle -> TransferSlots -> Transfer -> TransferInfo -> TransferSlotRunner -> IO ()
-transferThread dstatus slots t info runner = case (transferRemote info, associatedFile info) of
+transferThread :: DaemonStatusHandle -> TransferSlots -> Transfer -> TransferInfo -> TransferSlotRunner -> FilePath -> IO ()
+transferThread dstatus slots t info runner program = case (transferRemote info, associatedFile info) of
(Nothing, _) -> noop
(_, Nothing) -> noop
(Just remote, Just file) -> do
@@ -93,14 +94,13 @@ transferThread dstatus slots t info runner = case (transferRemote info, associat
transferprocess remote file = void $ do
(_, _, _, pid)
- <- createProcess (proc command $ toCommand params)
+ <- createProcess (proc program $ toCommand params)
{ create_group = True }
status <- waitForProcess pid
addAlert dstatus $
makeAlertFiller (status == ExitSuccess) $
transferFileAlert direction file
where
- command = "git-annex"
params =
[ Param "transferkey"
, Param $ key2file $ transferKey t
diff --git a/Assistant/WebApp/DashBoard.hs b/Assistant/WebApp/DashBoard.hs
index e51eb7777..949793121 100644
--- a/Assistant/WebApp/DashBoard.hs
+++ b/Assistant/WebApp/DashBoard.hs
@@ -26,6 +26,7 @@ import Utility.DataUnits
import Types.Key
import qualified Remote
import qualified Git
+import Locations.UserConfig
import Yesod
import Text.Hamlet
@@ -211,6 +212,7 @@ startTransfer t = do
{ transferPid = Nothing }
liftIO $ Transferrer.transferThread
dstatus slots t info inImmediateTransferSlot
+ =<< readProgramFile
getCurrentTransfers :: Handler TransferMap
getCurrentTransfers = currentTransfers
diff --git a/Build/InstallDesktopFile.hs b/Build/InstallDesktopFile.hs
index 891431ebe..3bcaecf9a 100644
--- a/Build/InstallDesktopFile.hs
+++ b/Build/InstallDesktopFile.hs
@@ -37,7 +37,7 @@ autostart command = genDesktopEntry
(command ++ " assistant --autostart")
[]
-writeDesktop :: String -> IO ()
+writeDesktop :: FilePath -> IO ()
writeDesktop command = do
destdir <- catchDefaultIO (getEnv "DESTDIR") ""
uid <- fromIntegral <$> getRealUserID
diff --git a/Command/Assistant.hs b/Command/Assistant.hs
index 24cc3ec6c..eb2a4a500 100644
--- a/Command/Assistant.hs
+++ b/Command/Assistant.hs
@@ -55,8 +55,7 @@ autoStart = do
ifM (doesFileExist autostartfile)
( do
dirs <- lines <$> readFile autostartfile
- programfile <- programFile
- program <- catchDefaultIO (readFile programfile) "git-annex"
+ program <- readProgramFile
when (null dirs) nothing
forM_ dirs $ \d -> do
putStrLn $ "git-annex autostart in " ++ d
diff --git a/Locations/UserConfig.hs b/Locations/UserConfig.hs
index 9b04aed61..5da58eb9f 100644
--- a/Locations/UserConfig.hs
+++ b/Locations/UserConfig.hs
@@ -7,10 +7,9 @@
module Locations.UserConfig where
+import Common
import Utility.FreeDesktop
-import System.FilePath
-
{- ~/.config/git-annex/file -}
userConfigFile :: FilePath -> IO FilePath
userConfigFile file = do
@@ -24,3 +23,9 @@ autoStartFile = userConfigFile "autostart"
- has installed it to some aweful non-PATH location. -}
programFile :: IO FilePath
programFile = userConfigFile "program"
+
+{- Returns a command to run for git-annex. -}
+readProgramFile :: IO FilePath
+readProgramFile = do
+ programfile <- programFile
+ catchDefaultIO (readFile programfile) "git-annex"