Expand description
The plugin manager: a static JSON registry index of plugin packages, checksum-verified
downloads, side-by-side versioned installs, and dre.lock.
Index location: DRE_REGISTRY_URL, default DEFAULT_REGISTRY. It may be an https://
URL, a file:// URL or a plain path. Format: docs/registry.md.
Structs§
- Artifact
- Index
- Index
Package - A plugin package: one executable per platform, serving every plugin in
provides. - Index
Version - Release
- One published (non-draft) release of a GitHub repository whose tag is a version.
Enums§
- Synced
- What
syncdid for one package.
Constants§
- DEFAULT_
HTTP_ TIMEOUT - Seconds a download may receive nothing, by default.
- DEFAULT_
REGISTRY - INDEX_
SCHEMA - The index’s current schema. Schema 1 listed single plugins (
kindandname); each still reads as a package of that one plugin.
Functions§
- explain_
undeclared - Name the package to declare for each
undeclared-pluginerror, from DRE’s registry, or say that the registry has no such plugin. The registry is fetched now, so a newly published package is known without a newdre. Unreachable: unchanged. - fetch
- Download
url(or read a local path orfile://URL). Downloads give up on a connection after 30s and on a response that sends nothing forhttp_timeout(no total limit, so a slow but healthy download finishes), and are tried 3 times on connection errors, timeouts, 429 (honouringRetry-After) and 5xx. - github_
api - The GitHub API DRE talks to:
DRE_GITHUB_API_URL(GitHub Enterprise, tests), else GitHub’s. - github_
releases repo’s releases from the GitHub API (DRE_GITHUB_API_URL,GITHUB_TOKEN), skipping drafts and tags that aren’t versions, newest first byversion_order. Every page is read: a repository that also releases its plugins (duckdb-v1.0.0) can list many of those first.- http_
timeout - How long a download may receive nothing:
DRE_HTTP_TIMEOUT, else the project’sflags: http_timeout, else 60 seconds. - install
- Download, verify and install one version into
<dir>/<package>/<version>/. Returns its lock entry. - install_
linked - Install into
dirthrough the shared cache: download there once, then link intodir. - platform
- This machine’s platform key in the index:
<os>-<arch>, e.g.macos-aarch64. - prefer_
stable - The highest of
itemswhose version matchesreq. When none does, a pre-release counts if its release would match, so*finds0.0.1-alphawhen a plugin has no stable release yet (semver on its own only matches a pre-release thatreqnames explicitly). - registry_
url - set_
project_ http_ timeout flags: http_timeoutfrom the project being run (set once, when it loads).- sync
- Make every declared package available, installing what’s missing (unless
installis false, in which case missing packages are errors). Honoursdre.lockpins, writes new pins. - version_
order - Which version is newer: semver precedence, except that numbers inside a pre-release
identifier compare as numbers. Semver compares
alpha-10andalpha-9as text, which puts0.0.1-alpha-10before0.0.1-alpha-9; DRE’s own pre-releases are named0.0.1-alpha-<n>.