io.dominic.wedge.clip-aero
Clip system read from an Aero config
io.dominic.wedge.integrant-aero
Integrant system read from an Aero config
You might want to create your own system because you’d like to use a custom component library or config language. Alternatively, you might want to tweak an existing system to add a bit of early functionality.
This is an advanced level feature, and pretty undocumented. Expect dragons here. If you do this, please email the mailing list (lit:[~severeoverfl0w/wedge@lists.sr.ht]).
To provide a system, you only need a namespace with four functions defined within:
system-config
start
stop
load-dev
These four functions will be called by io.dominic.wedge.system
's, and mirrors of those functions when yours is the system configured for use.
io.dominic.wedge.system
has documentation for what each of these functions should do, additionally you should have a look at the included systems in Wedge to see how they are implemented.
load-dev
is particularly unorthodox for Clojure code.
It uses the load
functionality in Clojure to inline functions into an existing namespace.
This allows an "open world" set of functionality to be provided.
The file that you load
should not have an ns
declaration, and will instead use require
for any libs it requires.
You’ll need to make sure it isn’t in a path that tools.namespace will reload if you add it into your project, as it will fail to load the file.
You may wish to integrate your dev
system into Wedge’s hook system.
This is an optional step, but may provide value to individual developers not just the whole project.
To integrate with hooks, require the io.dominic.wedge.impl.dev-system-hooks
namespace.
It contains a function raise-evt
, which you can send the relevant lifecycles to.
You should aim to use the built-in lifecycles (:start-once
, :stop-once
, :start-always
, :stop-always
), but there’s no harm in adding additional ones.
Can you improve this documentation?Edit on sourcehut
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close