arch-toolkit
Complete Rust toolkit for Arch Linux package management. Provides a unified API for interacting with Arch Linux package management, including AUR (Arch User Repository) operations, dependency resolution, package index queries, installation command building, news feeds, and security advisories.
Features
Current Features
- AUR Operations (
aurfeature, enabled by default)- Package search via AUR RPC v5
- Detailed package information retrieval
- Package comments fetching and parsing
- PKGBUILD content retrieval
- Automatic rate limiting with exponential backoff
- Configurable retry policies with per-operation control
- Optional caching layer (memory and disk)
Planned Features
- Dependency resolution and SRCINFO parsing
- Package database queries
- Installation command building
- News feeds and security advisories
- PKGBUILD security analysis
Installation
Add arch-toolkit to your Cargo.toml:
[]
= "0.1.1"
Feature Flags
aur(default): AUR search, package info, comments, and PKGBUILD fetchingcache-disk: Enable disk-based caching for persistence across restarts
To disable default features:
= { = "0.1.1", = false, = ["aur"] }
To enable disk caching:
= { = "0.1.1", = ["cache-disk"] }
Quick Start
Basic Usage
use *;
async
Custom Configuration
use ArchClient;
use Duration;
let client = builder
.timeout
.user_agent
.max_retries
.build?;
Or configure via environment variables (perfect for CI/CD):
let client = builder
.from_env // Load configuration from environment
.build?;
Retry Policy Configuration
use ArchClient;
use RetryPolicy;
let retry_policy = RetryPolicy ;
let client = builder
.retry_policy
.build?;
Caching
Enable caching to reduce network requests:
use ArchClient;
use CacheConfigBuilder;
use Duration;
let cache_config = new
.enable_search
.search_ttl // 5 minutes
.enable_info
.info_ttl // 15 minutes
.enable_comments
.comments_ttl // 10 minutes
.memory_cache_size
.build;
let client = builder
.cache_config
.build?;
With disk caching (requires cache-disk feature):
let cache_config = new
.enable_search
.search_ttl
.enable_disk_cache // Persist across restarts
.build;
Fetch Comments
let comments = client.aur.comments.await?;
for comment in comments.iter.take
Fetch PKGBUILD
let pkgbuild = client.aur.pkgbuild.await?;
println!;
Health Checks
Monitor AUR service status:
// Quick health check
let is_healthy = client.health_check.await?;
// Detailed status with latency
let status = client.health_status.await?;
println!;
Examples
See the examples/ directory for comprehensive examples:
examples/aur_example.rs: Complete AUR operations demonstrationexamples/with_caching.rs: Caching layer usageexamples/env_config.rs: Environment variable configurationexamples/health_check.rs: Health check functionality
Run examples with:
API Documentation
Full API documentation is available at docs.rs/arch-toolkit or build locally:
Rate Limiting
arch-toolkit automatically implements rate limiting for archlinux.org requests:
- Minimum 200ms delay between requests
- Exponential backoff on failures
- Serialized requests (one at a time) to prevent overwhelming the server
- Configurable retry policies
Error Handling
All operations return Result<T, ArchToolkitError>. Common error types:
ArchToolkitError::Network: HTTP request failuresArchToolkitError::Parse: JSON/HTML parsing errorsArchToolkitError::InvalidInput: Invalid parameters or URLsArchToolkitError::Timeout: Request timeoutArchToolkitError::EmptyInput: Empty input provided (with input validation)ArchToolkitError::InvalidPackageName: Invalid package name format
Input validation is enabled by default and validates package names and search queries against Arch Linux standards.
Requirements
- Rust 1.70 or later
- Tokio runtime (for async operations)
License
MIT