#watcher #file-watcher #sse #server-sent-events #autoreload

app spook

File watcher geared towards automatic HTML generation and autoreload

3 releases

0.1.2 Sep 17, 2022
0.1.1 Jul 26, 2022
0.1.0 May 18, 2019

#745 in Filesystem

MIT/Apache

21KB
387 lines

SPOOK: spooky action at a distance!

A simple command line tool to trigger a command and/or an http server-sent event when files or directories change.

It is well-suited to the live generation and autoreload of HTML documents generated by command-line document processors such as Pandoc, Asciidoctor & friends.

Think of it as a super-minimalistic version of Watchman with server events signalling on top, or as a super-stripped-down version of LiveReload with a simple, standard signaling protocol.

Example use

In the simplest case, spook takes as arguments the files to be watched and the command to be triggered (with its own arguments, if any).

The following would for instance re-generate an html document with Pandoc each time the input files mydoc1.md or mydoc2.md change:

$ spook mydoc1.md mydoc2.md -- pandoc -o mydoc.html mydoc1.md mydoc2.md

The browser can also refresh HTML pages automatically by embedding a small javascript snippet (see the scripts directory) in the HTML and by enabling server-sent events with the --signal option, like so:

$ spook --signal mydoc1.md mydoc2.md -- pandoc -A spook_refresh_script.html -o mydoc.html mydoc1.md mydoc2.md

Autoreload works both with files opened directly in the browser and with files served by a local server (e.g. Python's SimpleHTTPServer).

More options

A handful of other options can be specified, e.g. to serve events from a different port, perform a preemptive trigger at launch, etc...

To see all available options, type:

$ spook --help

Platforms

This software is most definitely of the no-warranty, provided-as-is, mainly-tested-on-my-linux-box kind. But it should work on Linux/Mac/Windows, and with some luck on a couple of other OSes.

Server-sent events should be supported out-of-the-box on nearly all modern browsers.

Installation

The rust toolchain must be installed on your system. No panic, installing rust is a smooth ride: just let rustup guide you.

Once this is done, install spook with cargo:

$ cargo install spook

That's it.

License

This software is licensed under the Apache License, Version 2.0 or the MIT license, at your option.

Copyright (c) 2022 Serge Barral.

Dependencies

~1.8–9MB
~75K SLoC