Estoy tratando de crear un usuario LaunchAgents que dispare un script cuando una ruta gestionada por una aplicación de sandbox cambie (en mi caso, cuando /Library/Containers/com.omnigroup.OmniFocus3/Data/Library/Application\ Support/OmniFocus/OmniFocus.ofocus
cambiará).
Para esto, quiero usar el WatchPaths
clave de lanzamiento, ya lo intenté con una Acción de Carpeta, pero esos se limitan a la adición de archivos en una carpeta.
He hecho una prueba de trabajo para escuchar en un archivo y una carpeta en mi directorio principal y activar una notificación, por ejemplo:
<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=“1.0”>
<dict>
<key>Label</key>
<string>me.mayeu.helloworld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/terminal-notifier</string>
<string>-message</string>
<string>Test</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/me/watchtest/</string>
</array>
</dict>
</plist>
Esto funciona bien para cualquier cambio que ocurra bajo el watchtest
carpeta.
Pero cuando reemplace el WatchPaths
con la base de datos de OmniFocus, esto ya no funciona (no se activa ninguna notificación):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>me.mayeu.script.OmniListen</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/terminal-notifier</string>
<string>-message</string>
<string>Test</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/me/Library/Containers/com.omnigroup.OmniFocus3/Data/Library/Application\ Support/OmniFocus/OmniFocus.ofocus</string>
</array>
</dict>
</plist>
Tengo la sensación de que esto se debe al sandboxing de la aplicación. Pero no puedo encontrar ninguna documentación sobre eso.
Estoy usando MacOS Mojave 10.14.2.