assistant: Added --autostop to complement --autostart.

This commit is contained in:
Joey Hess 2015-05-01 13:53:45 -04:00
parent ed97ba4bda
commit 437d9db41d
4 changed files with 40 additions and 9 deletions

View file

@ -20,7 +20,7 @@ import Assistant.Install
import System.Environment import System.Environment
cmd :: [Command] cmd :: [Command]
cmd = [noRepo checkAutoStart $ dontCheck repoExists $ withOptions options $ cmd = [noRepo checkNoRepoOpts $ dontCheck repoExists $ withOptions options $
notBareRepo $ command "assistant" paramNothing seek SectionCommon notBareRepo $ command "assistant" paramNothing seek SectionCommon
"automatically sync changes"] "automatically sync changes"]
@ -30,11 +30,15 @@ options =
, Command.Watch.stopOption , Command.Watch.stopOption
, autoStartOption , autoStartOption
, startDelayOption , startDelayOption
, autoStopOption
] ]
autoStartOption :: Option autoStartOption :: Option
autoStartOption = flagOption [] "autostart" "start in known repositories" autoStartOption = flagOption [] "autostart" "start in known repositories"
autoStopOption :: Option
autoStopOption = flagOption [] "autostop" "stop in known repositories"
startDelayOption :: Option startDelayOption :: Option
startDelayOption = fieldOption [] "startdelay" paramNumber "delay before running startup scan" startDelayOption = fieldOption [] "startdelay" paramNumber "delay before running startup scan"
@ -43,25 +47,31 @@ seek ps = do
stopdaemon <- getOptionFlag Command.Watch.stopOption stopdaemon <- getOptionFlag Command.Watch.stopOption
foreground <- getOptionFlag Command.Watch.foregroundOption foreground <- getOptionFlag Command.Watch.foregroundOption
autostart <- getOptionFlag autoStartOption autostart <- getOptionFlag autoStartOption
autostop <- getOptionFlag autoStopOption
startdelay <- getOptionField startDelayOption (pure . maybe Nothing parseDuration) 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 :: Bool -> Bool -> Bool -> Bool -> Maybe Duration -> CommandStart
start foreground stopdaemon autostart startdelay start foreground stopdaemon autostart autostop startdelay
| autostart = do | autostart = do
liftIO $ autoStart startdelay liftIO $ autoStart startdelay
stop stop
| autostop = do
liftIO autoStop
stop
| otherwise = do | otherwise = do
liftIO ensureInstalled liftIO ensureInstalled
ensureInitialized ensureInitialized
Command.Watch.start True foreground stopdaemon startdelay Command.Watch.start True foreground stopdaemon startdelay
{- Run outside a git repository. Check to see if any parameter is {- Run outside a git repository; support autostart and autostop mode. -}
- --autostart and enter autostart mode. -} checkNoRepoOpts :: CmdParams -> IO ()
checkAutoStart :: CmdParams -> IO () checkNoRepoOpts _ = ifM (elem "--autostart" <$> getArgs)
checkAutoStart _ = ifM (elem "--autostart" <$> getArgs)
( autoStart Nothing ( autoStart Nothing
, error "Not in a git repository." , ifM (elem "--autostop" <$> getArgs)
( autoStop
, error "Not in a git repository."
)
) )
autoStart :: Maybe Duration -> IO () autoStart :: Maybe Duration -> IO ()
@ -89,3 +99,15 @@ autoStart startdelay = do
[ Param "assistant" [ Param "assistant"
, Param $ "--startdelay=" ++ fromDuration (fromMaybe (Duration 5) startdelay) , 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"
)

1
debian/changelog vendored
View file

@ -25,6 +25,7 @@ git-annex (5.20150421) UNRELEASED; urgency=medium
on a file that doesn't exist. It will now continue to other 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 files specified after that on the command line, and only error out at
the end. the end.
* assistant: Added --autostop to complement --autostart.
-- Joey Hess <id@joeyh.name> Tue, 21 Apr 2015 15:54:10 -0400 -- Joey Hess <id@joeyh.name> Tue, 21 Apr 2015 15:54:10 -0400

View file

@ -16,3 +16,6 @@ WantedBy=default.target
"""]] """]]
> This seems to overlap with [[todo/server-level_daemon__63__/]] in some way... --[[anarcat]] > This seems to overlap with [[todo/server-level_daemon__63__/]] in some way... --[[anarcat]]
> Added --autostop and improved the docuemntation for --stop. [[done]]
> --[[Joey]]

View file

@ -36,6 +36,11 @@ For more details about the git-annex assistant, see
Stop a running daemon in the current repository. 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 # SEE ALSO
[[git-annex]](1) [[git-annex]](1)