Plugins
Almost everything heph can do comes from plugins. A plugin is either a
driver — a named executor a target references via its driver field — or a
provider — it discovers or generates targets. For example, when you write driver = "bash" in a BUILD file, you are reaching for a driver registered by the
Exec plugin; when heph scans the workspace for BUILD files, that is
a provider at work.
Drivers
Each driver plugin registers one or more named executors a target can run through.
| Plugin | Driver | Purpose |
|---|---|---|
| Exec | exec, bash, sh | Runs shell commands in sandboxed builds, with interactive debugging. |
| Filesystem | fs | References workspace files and globs as build inputs. |
| Group | group | Bundles targets transparently with no extra work. |
| Hostbin | hostbin | Wraps host PATH binaries as targets for the build system. |
| Nix | nix | Builds reproducible tool environments via Nix flakes. |
| Textfile | textfile | Generates text files with optional executable permissions. |
Languages
Language plugins add first-class support for a toolchain, registering the drivers that build its libraries, binaries, and tests.
| Plugin | Driver | Purpose |
|---|---|---|
| Go | go_golist, go_embed, go_testmain | Go language support: libraries, binaries, tests. |
Providers
Each provider plugin discovers or generates targets rather than executing them, so it registers no driver.
| Plugin | Purpose |
|---|---|
| Buildfile | Scans the workspace for BUILD files and parses target definitions. |
| Query | Selects targets dynamically by label, package, prefix, or output. |