diff options
author | Joey Hess <joey@kitenet.net> | 2012-07-29 13:22:08 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-07-29 13:22:08 -0400 |
commit | 09e77a0cf0ca6e6c76ead584f16818dcf04a94b6 (patch) | |
tree | 7750b4b7e48cfe8c3c121e43edb9a3318ea104dd /Assistant/Threads | |
parent | 2dc5697a0ac36fdfe21da79a721db3f086bce041 (diff) |
add some alerts
Diffstat (limited to 'Assistant/Threads')
-rw-r--r-- | Assistant/Threads/MountWatcher.hs | 25 | ||||
-rw-r--r-- | Assistant/Threads/TransferScanner.hs | 12 | ||||
-rw-r--r-- | Assistant/Threads/Watcher.hs | 7 |
3 files changed, 34 insertions, 10 deletions
diff --git a/Assistant/Threads/MountWatcher.hs b/Assistant/Threads/MountWatcher.hs index 853d96d51..7d0ef5ae4 100644 --- a/Assistant/Threads/MountWatcher.hs +++ b/Assistant/Threads/MountWatcher.hs @@ -15,6 +15,7 @@ import Assistant.ThreadedMonad import Assistant.DaemonStatus import Assistant.ScanRemotes import Assistant.Threads.Pusher (pushToRemotes) +import Assistant.Alert import qualified Annex import qualified Git import Utility.ThreadScheduler @@ -158,17 +159,29 @@ handleMounts st dstatus scanremotes wasmounted nowmounted = mapM_ (handleMount s handleMount :: ThreadState -> DaemonStatusHandle -> ScanRemoteMap -> Mntent -> IO () handleMount st dstatus scanremotes mntent = do - debug thisThread ["detected mount of", mnt_dir mntent] + debug thisThread ["detected mount of", dir] rs <- remotesUnder st dstatus mntent unless (null rs) $ do branch <- runThreadState st $ Command.Sync.currentBranch let nonspecial = filter (Git.repoIsLocal . Remote.repo) rs - unless (null nonspecial) $ do - debug thisThread ["pulling from", show nonspecial] - runThreadState st $ manualPull branch nonspecial - now <- getCurrentTime - pushToRemotes thisThread now st Nothing nonspecial + unless (null nonspecial) $ + alertWhile dstatus (syncalert nonspecial) $ do + debug thisThread ["syncing with", show nonspecial] + runThreadState st $ manualPull branch nonspecial + now <- getCurrentTime + pushToRemotes thisThread now st Nothing nonspecial addScanRemotes scanremotes rs + where + dir = mnt_dir mntent + syncalert rs = Alert + { alertClass = Activity + , alertHeader = Just $ "Syncing with " ++ unwords (map Remote.name rs) + , alertMessage = StringAlert $ unwords + ["I noticed you plugged in", dir, + " -- let's get it in sync!"] + , alertBlockDisplay = True + } + {- Finds remotes located underneath the mount point. - diff --git a/Assistant/Threads/TransferScanner.hs b/Assistant/Threads/TransferScanner.hs index e6a078907..1bf8b062f 100644 --- a/Assistant/Threads/TransferScanner.hs +++ b/Assistant/Threads/TransferScanner.hs @@ -12,6 +12,7 @@ import Assistant.ScanRemotes import Assistant.TransferQueue import Assistant.ThreadedMonad import Assistant.DaemonStatus +import Assistant.Alert import Logs.Transfer import Logs.Location import qualified Remote @@ -31,9 +32,18 @@ transferScannerThread st dstatus scanremotes transferqueue = do runEvery (Seconds 2) $ do r <- getScanRemote scanremotes liftIO $ debug thisThread ["starting scan of", show r] - scan st dstatus transferqueue r + alertWhile dstatus (scanalert r) $ + scan st dstatus transferqueue r liftIO $ debug thisThread ["finished scan of", show r] where + scanalert r = Alert + { alertClass = Activity + , alertHeader = Just $ "Scanning " ++ Remote.name r + , alertMessage = StringAlert $ unwords + [ "Ensuring that ", Remote.name r + , "is fully in sync." ] + , alertBlockDisplay = True + } {- This is a naive scan through the git work tree. - diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs index 5086f95a2..ade26be19 100644 --- a/Assistant/Threads/Watcher.hs +++ b/Assistant/Threads/Watcher.hs @@ -74,9 +74,7 @@ watchThread st dstatus transferqueue changechan = do {- Initial scartup scan. The action should return once the scan is complete. -} startupScan :: ThreadState -> DaemonStatusHandle -> IO a -> IO a startupScan st dstatus scanner = do - runThreadState st $ - showAction "scanning" - let alert = activityAlert Nothing "Performing startup scan" + runThreadState st $ showAction "scanning" r <- alertWhile dstatus alert scanner modifyDaemonStatus_ dstatus $ \s -> s { scanComplete = True } @@ -86,6 +84,9 @@ startupScan st dstatus scanner = do showAction "started" return r + + where + alert = activityAlert Nothing "Performing startup scan" ignored :: FilePath -> Bool ignored = ig . takeFileName |