PIPELINE. Runs the preflight stages and assembles the report.
Every judgement this makes lives in hive-gimp.doctor.verdict, which is
pure. What remains here is sequencing and the two calls that touch a
transport, which is the only part that needs a double to exercise.
Staged, and each stage is a DIFFERENT remediation. Collapsing them into one
boolean is what makes an integration feel haunted: GIMP is not available
is true whether the plugin was never installed, GIMP is closed, the port is
held by something else, or GIMP is a major version this contract does not
describe. Those are four different afternoons.
PIPELINE. Runs the preflight stages and assembles the report. Every judgement this makes lives in `hive-gimp.doctor.verdict`, which is pure. What remains here is sequencing and the two calls that touch a transport, which is the only part that needs a double to exercise. Staged, and each stage is a DIFFERENT remediation. Collapsing them into one boolean is what makes an integration feel haunted: `GIMP is not available` is true whether the plugin was never installed, GIMP is closed, the port is held by something else, or GIMP is a major version this contract does not describe. Those are four different afternoons.
(check-contract)The command contract loaded and conformed. Touches no transport, so it is the one stage that still reports something useful with GIMP closed.
The command contract loaded and conformed. Touches no transport, so it is the one stage that still reports something useful with GIMP closed.
(check-plugin transport)The plugin is listening AND is the plugin.
check_server is answered by the plugin itself, so a success here proves
more than a completed TCP handshake does: anything can accept a connection
on 9877.
The plugin is listening AND is the plugin. `check_server` is answered by the plugin itself, so a success here proves more than a completed TCP handshake does: anything can accept a connection on 9877.
(check-python host-python)The OPTIONAL host-side Python port.
Marked :optional? so it can never fail the report. A missing Python costs
the pixel helpers and nothing else.
The OPTIONAL host-side Python port. Marked `:optional?` so it can never fail the report. A missing Python costs the pixel helpers and nothing else.
(check-version transport)GIMP's major version is one this contract describes.
GIMP's major version is one this contract describes.
(report {:keys [transport host-python]})Run every applicable stage and summarize.
The plugin stage short-circuits the version stage on purpose: asking an absent GIMP for its version produces a second copy of the first error, which pushes the actionable line off the top of the report.
Run every applicable stage and summarize. The plugin stage short-circuits the version stage on purpose: asking an absent GIMP for its version produces a second copy of the first error, which pushes the actionable line off the top of the report.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |