Remote Catalogs
A remote catalog is an ivpm.yaml published at a location you can fetch — a
local path, a file:// URL, or an http(s):// URL — whose dependency sets
enumerate named, described bundles of packages. Consumers can browse the
catalog and install a chosen dependency set into the current directory with
a single command, without first cloning a repository.
This builds on two pieces you already know:
Dependency Sets — each
dep-setis a named bundle, and both thepackageand eachdep-setaccept an optionaldescription.ivpm updateandivpm show deps— the catalog workflow is exposed through a--fromoption on each, rather than as new commands.
Browsing a catalog
ivpm show deps --from <path-or-url> fetches and parses the manifest and lists
its catalog — the package description and every dependency set with its
description — without fetching any dependencies or touching the current
directory:
$ ivpm show deps --from https://example.com/acme/ivpm.yaml
acme-tools v2.3.0
Curated EDA toolchain bundles for the Acme flow
Dependency sets:
default Minimal set — simulator + waveform viewer (default)
gui-tools Adds the GUI debugger and schematic viewer
Install with: ivpm update --from https://example.com/acme/ivpm.yaml -d <dep-set>
Add --json for machine-readable output.
Installing from a catalog
ivpm update --from <path-or-url> installs a dependency set into the current
directory. Use -d to choose the set (otherwise the catalog’s default set is
used):
# Install the 'gui-tools' set into ./packages
$ ivpm update --from https://example.com/acme/ivpm.yaml -d gui-tools
# Place the resolved workspace under ./vendor instead
$ ivpm update --from ./acme/ivpm.yaml --deps-dir vendor
Several dep-sets can be installed at once — repeat -d or give a
comma-separated list. Their packages are merged into the one workspace (a
package pulled by more than one set is installed once):
$ ivpm update --from ./acme/ivpm.yaml -d default -d gui-tools
$ ivpm update --from ./acme/ivpm.yaml -d default,gui-tools
When more than one set is installed, the source_manifest block records them
under a dep_sets list (rather than the singular dep_set).
--from may name the manifest file directly (.../ivpm.yaml) or just the
directory or host that contains it, in which case ivpm.yaml is looked for
within that location:
# Equivalent to --from https://edapack.github.io/ivpm.yaml
$ ivpm update --from https://edapack.github.io
# Equivalent to --from ./acme/ivpm.yaml
$ ivpm update --from ./acme
This works as long as <location>/ivpm.yaml exists.
The external manifest is not copied into your workspace. Instead, the
resolved package-lock.json records a source_manifest block naming the
--from source and the installed dep-set, so the workspace is self-describing
(see Package Lock File).
One driving manifest per workspace
A workspace has exactly one driving manifest. If the target directory already
contains its own ivpm.yaml, ivpm update --from refuses to run rather than
shadow it. To consume an external set from a directory that already has a
manifest, reference the external source from your own ivpm.yaml instead
(for example, as a src: ivpm.yaml dep-set factory — see Package Lock File)
so your local file remains the single source of truth.
Trust
ivpm update --from <url> fetches the manifest and then fetches whatever
git / HTTP / PyPI sources it names — the same capability (and the same trust
posture) as ivpm clone <git-url>. Point --from only at sources you trust.