Effortlessly run scripts when certain files change.
Project description
Supervisor
Effortlessly run scripts when certain files change.
Supervisor is a package that watches directories for changes. When specific changes take place, it invokes commands or scripts you specify.
For example, you could watch your Downloads folder and then automatically remove image metadata.
Installation
Warning: We're in the process of uploading Supervisor to PyPi. We're having issues getting it installed on the PATH properly. Until this is fixed, you can download the repo and install it in a virtualenv with pip3 install --editable .
Features
- Watch directories for specific changes:
any
,modified
,created
,moved
, ordeleted
- Using the
.supervisor
configuration file, you can watch any number of directories at the same time. - Invoke inline commands or provide a path to a script which will be invoked on each change in the directory.
Usage
Once you've installed Supervisor, run supervisor -c create
to create the ~/.supervisor
configuration file. It'll be populated with a comment (starting with #
) telling you to read the README. This is the part it's referring to.
Supervisor uses lines in the configuration file to start the observer(s). Below is the syntax for a configuration line (without square brackets):
[event]:::[directory]:::[command/file]
In practice, you might watch your Downloads/
folder for new files:
created:::/home/me/Downloads/:::echo "New file added"
Watching multiple directories
To watch multiple directories, simply add a new line:
created:::/home/me/Downloads/:::echo "New file added"
delete:::/home/me/Pictures/:::echo "Picture deleted"
Event Types
any
: Invoked on any of the following events.modified
: When a file within a directory is modified.created
: When a new file is added to the directory.deleted
: When a file is removed from the directory.moved
: When a file is moved to another place outside of the directory.
Configuration options
There are some helper commands to make it easier to work with the .supervisor
configuration file.
To access these arguments, pass the -c
or --conf
flag before. For instance, supervisor -c create
to create a config file.
create
: Creates a new~/.supervisor
file.reset
: Deletes the config file and offers an option to create a new one.edit
: Prompts for an editor name (e.g.vim
) and opens it for editing.delete
: Deletes the config file.echo
: Prints the contents of the config file to the console.
Recursive walking
Invoked with: -r, --recursive
BEWARE!!
This enabled recursive checks of the filesystem. This means that watching your home directory, for instance, will watch all directories within it. If you don't use this option carefully, you could run into a nearly infinite series of observers.
Do not use this option unless you know what you're doing. Almost all uses of Supervisor do not need to use this option. It can be useful, however, when you want to watch any change within a subdirectory.
For instance, we may want to know if any file within the supervisor
project directory was changed. This includes, for instance, the src/lib
directory.
We can add the configuration line:
any:::/path/to/Supervisor/:::script.sh
and invoke Supervisor with: supervisor --recursive
. Then, any change within this directory is reported.
Logging
Invoked with: -l, --log
Although every change is printed to the console, you may want a log of all the events Supervisor executes. To do so, enable the -l
flag.
Note: You cannot watch your home directory AND enable logging. This would create an infinite loop.
The log file is created at: $HOME/supervisor.log
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ssupervisor-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53ecaf322a89e7a5bae6d3f679df72f314945b19394ab71689edce52177a78d9 |
|
MD5 | 5e40cd98d034f79193806a53a075037e |
|
BLAKE2b-256 | 4f317b5b153756668ebedee9ba51867f7b72a723744c9785e978d083d2b52083 |