Developer Tools

vregistry

A local, file based package registry behind publish and fetch.

Released v1.0.0 · 2026-09-28
Import
use "stdlib/registry.ven"

A local, file based package registry for Venutian, built the same way the package manager itself is: on top of existing map, JSON and filesystem builtins, with no network registry involved. It lets a project publish and fetch packages from a folder it controls, rather than from an address on the internet.

vregistry.ven
print relative_content_hash("my-registry/packages/utils/1.0.0")
Reference (22 functions)

API reference

relative_content_hash(directory)

Hashes every file under directory into one digest, keyed by each file's path relative to directory rather than its absolute path.

relative_content_hash("my-registry/packages/utils/1.0.0")

registry_index_path(registry_dir)

Gives back the path to registry_dirs own index file.

registry_index_path("my-registry")

registry_packages_dir(registry_dir)

Gives back the path to registry_dirs archive of published packages.

registry_packages_dir("my-registry")

load_registry_index(registry_dir)

Loads registry_dirs index as a map, or a fresh empty map if none exists yet.

load_registry_index("my-registry")

save_registry_index(registry_dir, index)

Writes index back out to registry_dirs index file, creating the directory first if needed.

save_registry_index("my-registry", new_map())

package_dest_dir(registry_dir, name, version)

Gives back where a specific published name and version's files live on disk.

package_dest_dir("my-registry", "utils", "1.0.0")

has_package(index, name)

Tests whether index has any published version at all for name.

has_package(load_registry_index("my-registry"), "utils")

list_versions(registry_dir, name)

Lists every version of name published to registry_dir, oldest first.

list_versions("my-registry", "utils")

version_parts(version)

Splits a version string on "." into its raw component parts.

version_parts("1.2.3")

is_numeric_part(text)

Tests whether text is a component made entirely of digits.

is_numeric_part("10")

version_part_less(a, b)

Tests whether version component a sorts before component b.

version_part_less("9", "10")

version_part_equal(a, b)

Tests whether version component a equals component b.

version_part_equal("01", "1")

version_less(left, right)

Tests whether version left sorts strictly before version right.

version_less("9.0.0", "10.0.0")

sorted_list_by_version(versions)

Sorts a list of version strings in ascending numeric order.

sorted_list_by_version(["10.0.0", "2.0.0", "9.0.0"])

latest_version(registry_dir, name)

Gives back the newest published version of name, or nothing if it has none.

latest_version("my-registry", "utils")

publish_package(registry_dir, name, version, source_dir)

Publishes source_dir to the registry under name and version.

publish_package("my-registry", "utils", "1.0.0", "../shared/utils")

resolve_version(registry_dir, name, version_or_nothing)

Resolves a package name and optional version against the registry index.

resolve_version("my-registry", "utils", nothing)

sign_content_hash(signing_key, content_hash)

Package signing.

sign_content_hash("team-secret-key", "3a7bd3e2360a...")

sign_package(registry_dir, name, version, signing_key)

Signs an already-published name and version, storing the signature in the index.

sign_package("my-registry", "utils", "1.0.0", "team-secret-key")

verify_package_signature(registry_dir, name, version, signing_key)

Tests whether signing_key vouches for the recorded content hash of name/version.

verify_package_signature("my-registry", "utils", "1.0.0", "team-secret-key")

install_from_registry_verified(registry_dir, name, version_or_nothing, packages_dir, signing_key)

Installs a package from the registry, but only when its signature checks out.

install_from_registry_verified("my-registry", "utils", nothing, "venutian_packages", "team-secret-key")

install_from_registry(registry_dir, name, version_or_nothing, packages_dir)

Installs the resolved version of name from the registry into packages_dir.

install_from_registry("my-registry", "utils", nothing, "venutian_packages")

Get notified when vregistry changes

Get notified about

New versions and security advisories.

New and updated packages, once a day.

News on the math model built in Venutian.