deb8b8dc69
Remove 11-character requirement on folder names. Fixes #1. |
||
---|---|---|
.gitignore | ||
.npmignore | ||
api.js | ||
env.js | ||
hooks.js | ||
index.js | ||
LICENSE | ||
package.json | ||
README.md | ||
yarn.lock |
syncthing-hooks
Run shell scripts via event hook files (similar to Git hooks) when changes are detected in a Syncthing folder.
Prerequisites
Installation
npm i -g syncthing-hooks
Usage
You can simply run the watcher process via:
API_KEY=mykey syncthing-hooks
Don't forget to substitute mykey
with your syncthing API key, which can be found in the settings in the GUI.
If Syncthing runs on another host or listens to a non-default port, you can specify an URL by using ST_URL
.
Note that this URL has to include the protocol, hostname, port and path, e.g.:
ST_URL=http://<ip>:8384/rest/events
It won't install itself as a daemon by default, however. In order to run it as a service, it is recommended to install pm2:
npm i -g pm2
You can then register it as a daemon via:
pm2 start "API_KEY=mykey syncthing-hooks" --name sthooks
To create the daemon automatically on startup, consult this documentation.
You can follow the output of your hooks by using:
pm2 logs
Hooks
Create a folder in your home directory called .syncthing-hooks
.
A different directory can be set using ST_HOOK_ROOT
.
Each hook is a file with the following naming scheme:
folder-name-delay
The folder name is the 11 character unique string found in the syncthing GUI. The delay is a string (anything parseable by the ms module) indicating the idle time after an event, so that hooks aren't executed multiple times on successive changes in a short interval.
An example: a script at the location ~/.syncthing-hooks/night-owlzz-5m
will be executed five minutes after the most recent event in the folder with the identifier night-owlzz
.
Make sure your folder identifier is exactly 11 characters long and does not have an extension. Also, don't forget to chmod +x
the script.