Expand description
Registry management for the soar package manager.
This crate provides functionality for fetching, processing, and managing package metadata from remote repositories.
§Overview
The crate handles metadata sources:
- Repositories: Standard package repositories containing package metadata
Metadata can be provided in two formats:
- SQLite databases (
.sdbfiles, optionally zstd-compressed) - JSON files containing package arrays
§Example
use soar_registry::{fetch_metadata, MetadataContent};
use soar_config::repository::Repository;
async fn sync_repo(repo: &Repository, existing_etag: Option<String>) -> soar_registry::Result<()> {
if let Some((etag, content)) = fetch_metadata(repo, false, existing_etag).await? {
match content {
MetadataContent::SqliteDb(bytes) => {
// Write SQLite database to disk
}
MetadataContent::Json(packages) => {
// Process JSON packages into a database
}
}
}
Ok(())
}Re-exports§
pub use error::ErrorContext;pub use error::RegistryError;pub use error::Result;pub use metadata::fetch_metadata;pub use metadata::parse_index;pub use metadata::process_metadata_content;pub use metadata::write_metadata_db;pub use metadata::MetadataContent;pub use metadata::SQLITE_MAGIC_BYTES;pub use metadata::SUPPORTED_FORMAT;pub use metadata::ZST_MAGIC_BYTES;pub use package::RemotePackage;