Repository navigation
Release v0.1.2
Pre-release
Pre-release
Release v0.1.2 - Dependency Parsing
Release Date: 2025-12-22
🚀 What's New
This release introduces comprehensive dependency parsing capabilities, allowing you to extract and analyze dependencies from PKGBUILD files, .SRCINFO files, and pacman output.
✨ New Features
Dependency Parsing Module (deps feature)
- Parse dependencies from PKGBUILD files
- Supports single-line and multi-line bash array syntax
- Handles append syntax (
depends+=) in PKGBUILD functions - Extracts
depends,makedepends,checkdepends, andoptdepends - Automatic filtering of virtual packages (.so files)
- Automatic deduplication of dependencies
- Parse dependencies from .SRCINFO files
- Extract structured data from .SRCINFO content
- Handle architecture-specific dependencies
- Support for split packages
- Fetch .SRCINFO from AUR (requires
aurfeature)
- Parse dependency specifications
- Parse dependency specs with version constraints (e.g.,
package>=1.2.3) - Parse pacman
-Sioutput for dependencies and conflicts - Handle multi-line dependencies and deduplication
- Parse dependency specs with version constraints (e.g.,
Dependency Types
- Comprehensive type system for dependency management
- Support for dependency status, sources, and specifications
- Ready for future dependency resolution features
📚 Examples
Two new example files demonstrate the parsing capabilities:
examples/pkgbuild_example.rs- 16 usage examples for PKGBUILD parsingexamples/srcinfo_example.rs- Comprehensive .SRCINFO parsing examples
Quick Start
Parsing PKGBUILD Files
use arch_toolkit::deps::parse_pkgbuild_deps;
let pkgbuild = r"
depends=('glibc' 'python>=3.10')
makedepends=('make' 'gcc')
";
let (depends, makedepends, checkdepends, optdepends) = parse_pkgbuild_deps(pkgbuild);
println!("Runtime dependencies: {:?}", depends);Parsing .SRCINFO Files
use arch_toolkit::deps::{parse_srcinfo, parse_srcinfo_deps};
let srcinfo = r"
pkgbase = example-package
depends = glibc
depends = python>=3.10
makedepends = make
";
// Parse full .SRCINFO into structured data
let data = parse_srcinfo(srcinfo)?;
// Or just extract dependencies
let (depends, makedepends, checkdepends, optdepends) = parse_srcinfo_deps(srcinfo);Fetching .SRCINFO from AUR
use arch_toolkit::deps::fetch_srcinfo;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let srcinfo = fetch_srcinfo("yay").await?;
let data = parse_srcinfo(&srcinfo)?;
println!("Package: {}", data.pkgbase);
Ok(())
}Parsing Dependency Specifications
use arch_toolkit::deps::parse_dep_spec;
let spec = "python>=3.10";
let dep = parse_dep_spec(spec)?;
println!("Package: {}, Version: {:?}", dep.name, dep.version);Installation
cargo add arch-toolkit@0.1.2 --features depsOr update your Cargo.toml:
[dependencies]
arch-toolkit = { version = "0.1.2", features = ["deps"] }For AUR integration (fetching .SRCINFO):
[dependencies]
arch-toolkit = { version = "0.1.2", features = ["deps", "aur"] }Migration from v0.1.1
No breaking changes! This is a backward-compatible release. All existing code will continue to work.
New capabilities:
- Enable the
depsfeature to access dependency parsing functions - Use
parse_pkgbuild_deps()to extract dependencies from PKGBUILD files - Use
parse_srcinfo()orfetch_srcinfo()for .SRCINFO parsing - Check out the example files for comprehensive usage patterns
Documentation
Feedback
Found a bug or have a feature request? Open an issue on GitHub!
Full Changelog: See CHANGELOG.md for detailed technical changes.