summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Assistant.hs40
-rw-r--r--debian/changelog1
-rw-r--r--doc/bugs/git_annex_assistant_--stop_fails_if_not_run_from_inside_a_git_annex_repository.mdwn3
-rw-r--r--doc/git-annex-assistant.mdwn5
4 files changed, 40 insertions, 9 deletions
diff --git a/Command/Assistant.hs b/Command/Assistant.hs
index 590a2e437..97bc08c7b 100644
--- a/Command/Assistant.hs
+++ b/Command/Assistant.hs
@@ -20,7 +20,7 @@ import Assistant.Install
import System.Environment
cmd :: [Command]
-cmd = [noRepo checkAutoStart $ dontCheck repoExists $ withOptions options $
+cmd = [noRepo checkNoRepoOpts $ dontCheck repoExists $ withOptions options $
notBareRepo $ command "assistant" paramNothing seek SectionCommon
"automatically sync changes"]
@@ -30,11 +30,15 @@ options =
, Command.Watch.stopOption
, autoStartOption
, startDelayOption
+ , autoStopOption
]
autoStartOption :: Option
autoStartOption = flagOption [] "autostart" "start in known repositories"
+autoStopOption :: Option
+autoStopOption = flagOption [] "autostop" "stop in known repositories"
+
startDelayOption :: Option
startDelayOption = fieldOption [] "startdelay" paramNumber "delay before running startup scan"
@@ -43,25 +47,31 @@ seek ps = do
stopdaemon <- getOptionFlag Command.Watch.stopOption
foreground <- getOptionFlag Command.Watch.foregroundOption
autostart <- getOptionFlag autoStartOption
+ autostop <- getOptionFlag autoStopOption
startdelay <- getOptionField startDelayOption (pure . maybe Nothing parseDuration)
- withNothing (start foreground stopdaemon autostart startdelay) ps
+ withNothing (start foreground stopdaemon autostart autostop startdelay) ps
-start :: Bool -> Bool -> Bool -> Maybe Duration -> CommandStart
-start foreground stopdaemon autostart startdelay
+start :: Bool -> Bool -> Bool -> Bool -> Maybe Duration -> CommandStart
+start foreground stopdaemon autostart autostop startdelay
| autostart = do
liftIO $ autoStart startdelay
stop
+ | autostop = do
+ liftIO autoStop
+ stop
| otherwise = do
liftIO ensureInstalled
ensureInitialized
Command.Watch.start True foreground stopdaemon startdelay
-{- Run outside a git repository. Check to see if any parameter is
- - --autostart and enter autostart mode. -}
-checkAutoStart :: CmdParams -> IO ()
-checkAutoStart _ = ifM (elem "--autostart" <$> getArgs)
+{- Run outside a git repository; support autostart and autostop mode. -}
+checkNoRepoOpts :: CmdParams -> IO ()
+checkNoRepoOpts _ = ifM (elem "--autostart" <$> getArgs)
( autoStart Nothing
- , error "Not in a git repository."
+ , ifM (elem "--autostop" <$> getArgs)
+ ( autoStop
+ , error "Not in a git repository."
+ )
)
autoStart :: Maybe Duration -> IO ()
@@ -89,3 +99,15 @@ autoStart startdelay = do
[ Param "assistant"
, Param $ "--startdelay=" ++ fromDuration (fromMaybe (Duration 5) startdelay)
]
+
+autoStop :: IO ()
+autoStop = do
+ dirs <- liftIO readAutoStartFile
+ program <- programPath
+ forM_ dirs $ \d -> do
+ putStrLn $ "git-annex autostop in " ++ d
+ setCurrentDirectory d
+ ifM (boolSystem program [Param "assistant", Param "--stop"])
+ ( putStrLn "ok"
+ , putStrLn "failed"
+ )
diff --git a/debian/changelog b/debian/changelog
index 38db4ee67..db428c5f5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,7 @@ git-annex (5.20150421) UNRELEASED; urgency=medium
on a file that doesn't exist. It will now continue to other
files specified after that on the command line, and only error out at
the end.
+ * assistant: Added --autostop to complement --autostart.
-- Joey Hess <id@joeyh.name> Tue, 21 Apr 2015 15:54:10 -0400
diff --git a/doc/bugs/git_annex_assistant_--stop_fails_if_not_run_from_inside_a_git_annex_repository.mdwn b/doc/bugs/git_annex_assistant_--stop_fails_if_not_run_from_inside_a_git_annex_repository.mdwn
index 70ece97ec..61a01d73f 100644
--- a/doc/bugs/git_annex_assistant_--stop_fails_if_not_run_from_inside_a_git_annex_repository.mdwn
+++ b/doc/bugs/git_annex_assistant_--stop_fails_if_not_run_from_inside_a_git_annex_repository.mdwn
@@ -16,3 +16,6 @@ WantedBy=default.target
"""]]
> This seems to overlap with [[todo/server-level_daemon__63__/]] in some way... --[[anarcat]]
+
+> Added --autostop and improved the docuemntation for --stop. [[done]]
+> --[[Joey]]
diff --git a/doc/git-annex-assistant.mdwn b/doc/git-annex-assistant.mdwn
index a88a7019b..5c0f6408b 100644
--- a/doc/git-annex-assistant.mdwn
+++ b/doc/git-annex-assistant.mdwn
@@ -36,6 +36,11 @@ For more details about the git-annex assistant, see
Stop a running daemon in the current repository.
+* `--autostop`
+
+ The complement to --autostart; stops all running daemons in the
+ repositories listed in the autostart file.
+
# SEE ALSO
[[git-annex]](1)