Expand description
Extension resource discovery and loading.
Provides the resource loading strategy for discovering extension manifests from project, user, and explicit paths with documented precedence.
§Precedence Model
Extension resources are discovered from multiple layers, each with a numeric precedence value. Higher precedence values override lower ones when extension names collide. The standard precedence order is:
- User-level (
~/.config/opi/extensions/on Unix,%APPDATA%\opi\extensions\on Windows) — precedence 0 - Project-level (
.opi/extensions/in workspace root) — precedence 1 - Explicit (CLI
--extensionpaths or configextensions.paths) — precedence 2
When two layers provide an extension with the same name, the higher precedence layer wins. Within a single layer, duplicate names produce an error.
§Manifest Format
Each extension directory must contain an extension.toml manifest:
[extension]
name = "my-extension" # required, non-empty
version = "1.0.0" # optional
description = "..." # optional§Path Normalization
All paths are canonicalized (resolved to absolute form) before comparison. This prevents duplicate detection bypass via relative paths or symlinks.
§Unstable
This module is part of the unstable 0.x extension API. Breaking changes may occur between minor versions without a major version bump.
Structs§
- Discovery
Layer - A single discovery layer with root path, optional subdirectory, and precedence value.
- Explicit
Resource Paths - Explicit resource paths from resolved configuration or embedder setup.
- Extension
Manifest - Parsed extension manifest from
extension.toml. - Extension
Resource - A discovered extension resource with its manifest, filesystem path, and layer precedence.
- Resource
Discovery Layers - Discovery layers for every metadata-backed resource kind.
Enums§
- Resource
Discovery Error - Errors from extension resource discovery.
Functions§
- discover_
extension_ resources - Discover extension resources across multiple layers with precedence-based deduplication.
- standard_
discovery_ layers - Build the standard user/project/explicit discovery layers for a workspace.