git annex watch --stop
This commit is contained in:
parent
8539a7bde8
commit
d0a0a6ae21
3 changed files with 49 additions and 20 deletions
|
@ -50,27 +50,36 @@ data Change = Change
|
|||
deriving (Show)
|
||||
|
||||
def :: [Command]
|
||||
def = [withOptions [foregroundOption] $
|
||||
def = [withOptions [foregroundOption, stopOption] $
|
||||
command "watch" paramPaths seek "watch for changes"]
|
||||
|
||||
seek :: [CommandSeek]
|
||||
seek = [withFlag foregroundOption $ withNothing . start]
|
||||
seek = [withFlag stopOption $ \stopdaemon ->
|
||||
withFlag foregroundOption $ \foreground ->
|
||||
withNothing $ start foreground stopdaemon]
|
||||
|
||||
foregroundOption :: Option
|
||||
foregroundOption = Option.flag [] "foreground" "do not daemonize"
|
||||
|
||||
start :: Bool -> CommandStart
|
||||
start foreground = notBareRepo $ withStateMVar $ \st -> do
|
||||
if foreground
|
||||
then do
|
||||
showStart "watch" "."
|
||||
liftIO $ watch st
|
||||
else do
|
||||
logfd <- liftIO . openLog =<< fromRepo gitAnnexLogFile
|
||||
pidfile <- fromRepo gitAnnexPidFile
|
||||
liftIO $ daemonize logfd (Just pidfile) False $ watch st
|
||||
stopOption :: Option
|
||||
stopOption = Option.flag [] "stop" "stop daemon"
|
||||
|
||||
start :: Bool -> Bool -> CommandStart
|
||||
start foreground stopdaemon = notBareRepo $ do
|
||||
if stopdaemon
|
||||
then liftIO . stopDaemon =<< fromRepo gitAnnexPidFile
|
||||
else withStateMVar $ startDaemon (not foreground)
|
||||
stop
|
||||
|
||||
startDaemon :: Bool -> MVar Annex.AnnexState -> Annex ()
|
||||
startDaemon False st = do
|
||||
showStart "watch" "."
|
||||
liftIO $ watch st
|
||||
startDaemon True st = do
|
||||
logfd <- liftIO . openLog =<< fromRepo gitAnnexLogFile
|
||||
pidfile <- fromRepo gitAnnexPidFile
|
||||
liftIO $ daemonize logfd (Just pidfile) False $ watch st
|
||||
|
||||
watch :: MVar Annex.AnnexState -> IO ()
|
||||
#if defined linux_HOST_OS
|
||||
watch st = withINotify $ \i -> do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue