summaryrefslogtreecommitdiff
path: root/Assistant/Threads
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-07-29 13:22:08 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-07-29 13:22:08 -0400
commit09e77a0cf0ca6e6c76ead584f16818dcf04a94b6 (patch)
tree7750b4b7e48cfe8c3c121e43edb9a3318ea104dd /Assistant/Threads
parent2dc5697a0ac36fdfe21da79a721db3f086bce041 (diff)
add some alerts
Diffstat (limited to 'Assistant/Threads')
-rw-r--r--Assistant/Threads/MountWatcher.hs25
-rw-r--r--Assistant/Threads/TransferScanner.hs12
-rw-r--r--Assistant/Threads/Watcher.hs7
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