diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-05-01 13:53:45 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-05-01 13:53:45 -0400 |
commit | 4e1898c1ceff2f37088c888d3ed4ffd0e4ba3cc2 (patch) | |
tree | 1070b782590b4acf4130326e81ce85f2cf9d38f9 | |
parent | e231ce9c4dfad49a19c22683eb3109b604829f70 (diff) |
assistant: Added --autostop to complement --autostart.
-rw-r--r-- | Command/Assistant.hs | 40 | ||||
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | doc/bugs/git_annex_assistant_--stop_fails_if_not_run_from_inside_a_git_annex_repository.mdwn | 3 | ||||
-rw-r--r-- | doc/git-annex-assistant.mdwn | 5 |
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) |