Crate arch_toolkit

Crate arch_toolkit 

Source
Expand description

Complete Rust toolkit for Arch Linux package management.

This crate 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

  • aur: AUR search, package info, comments, and PKGBUILD fetching
  • deps: Dependency resolution, parsing, and reverse dependency analysis
  • index: Package database queries (planned)
  • install: Installation command building (planned)
  • news: News feeds and security advisories (planned)
  • sandbox: PKGBUILD security analysis (planned)

§Examples

use arch_toolkit::ArchClient;

let client = ArchClient::new()?;
let packages = client.aur().search("yay").await?;
println!("Found {} packages", packages.len());

§Fetch Package Details

use arch_toolkit::ArchClient;

let client = ArchClient::new()?;
let details = client.aur().info(&["yay", "paru"]).await?;
for pkg in details {
    println!("{}: {}", pkg.name, pkg.description);
}

§Custom Configuration

use arch_toolkit::ArchClient;
use std::time::Duration;

let client = ArchClient::builder()
    .timeout(Duration::from_secs(60))
    .user_agent("my-app/1.0")
    .build()?;
let packages = client.aur().search("yay").await?;

§Fetch Comments

use arch_toolkit::ArchClient;

let client = ArchClient::new()?;
let comments = client.aur().comments("yay").await?;
for comment in comments.iter().take(5) {
    println!("{}: {}", comment.author, comment.content);
}

§Fetch PKGBUILD

use arch_toolkit::ArchClient;

let client = ArchClient::new()?;
let pkgbuild = client.aur().pkgbuild("yay").await?;
println!("PKGBUILD:\n{}", pkgbuild);

§Dependency Resolution

use arch_toolkit::deps::DependencyResolver;
use arch_toolkit::{PackageRef, PackageSource};

let resolver = DependencyResolver::new();
let packages = vec![
    PackageRef {
        name: "firefox".into(),
        version: "121.0".into(),
        source: PackageSource::Official {
            repo: "extra".into(),
            arch: "x86_64".into(),
        },
    },
];

let result = resolver.resolve(&packages).unwrap();
println!("Found {} dependencies", result.dependencies.len());

§Parse Dependency Specifications

use arch_toolkit::deps::parse_dep_spec;

let spec = parse_dep_spec("python>=3.12");
println!("Package: {}, Version: {}", spec.name, spec.version_req);

§Query Installed Packages

use arch_toolkit::deps::get_installed_packages;

let installed = get_installed_packages().unwrap();
println!("Found {} installed packages", installed.len());

Re-exports§

pub use error::ArchToolkitError as Error;
pub use error::Result;
pub use types::AurComment;
pub use types::AurPackage;
pub use types::AurPackageDetails;
pub use types::HealthStatus;
pub use types::ServiceStatus;
pub use types::Dependency;
pub use types::DependencySource;
pub use types::DependencySpec;
pub use types::DependencyStatus;
pub use types::PackageRef;
pub use types::PackageSource;
pub use types::ReverseDependencySummary;
pub use types::SrcinfoData;
pub use deps::DependencyResolution;
pub use deps::DependencyResolver;
pub use deps::ResolverConfig;
pub use deps::ReverseDependencyAnalyzer;
pub use deps::ReverseDependencyReport;
pub use aur::AurApi;
pub use aur::MockAurApi;
pub use client::ArchClient;
pub use client::ArchClientBuilder;
pub use client::CacheInvalidator;
pub use client::RetryPolicy;
pub use cache::CacheConfig;
pub use cache::CacheConfigBuilder;
pub use aur::validation::ValidationConfig;

Modules§

aur
AUR (Arch User Repository) operations.
cache
Caching layer for arch-toolkit operations.
client
HTTP client with rate limiting for arch-toolkit.
deps
Dependency parsing and resolution utilities for Arch Linux packages.
error
Unified error type for arch-toolkit.
health
Health check functionality for archlinux.org services.
prelude
Prelude module for convenient imports.
types
Shared data types for arch-toolkit.