#[cfg(feature = "aur")]
mod comments;
#[cfg(feature = "aur")]
mod info;
#[cfg(feature = "aur")]
mod mock;
#[cfg(feature = "aur")]
mod pkgbuild;
#[cfg(feature = "aur")]
mod search;
#[cfg(feature = "aur")]
mod traits;
#[cfg(feature = "aur")]
pub mod utils;
#[cfg(feature = "aur")]
pub mod validation;
#[cfg(feature = "aur")]
use crate::client::ArchClient;
#[cfg(feature = "aur")]
use crate::error::Result;
#[cfg(feature = "aur")]
use crate::types::{AurComment, AurPackage, AurPackageDetails};
#[cfg(feature = "aur")]
pub use mock::MockAurApi;
#[cfg(feature = "aur")]
pub use traits::AurApi;
#[cfg(feature = "aur")]
#[derive(Debug)]
pub struct Aur<'a> {
client: &'a ArchClient,
}
#[cfg(feature = "aur")]
impl<'a> Aur<'a> {
pub(crate) const fn new(client: &'a ArchClient) -> Self {
Self { client }
}
pub async fn search(&self, query: &str) -> Result<Vec<AurPackage>> {
search::search(self.client, query).await
}
pub async fn info(&self, names: &[&str]) -> Result<Vec<AurPackageDetails>> {
info::info(self.client, names).await
}
pub async fn comments(&self, pkgname: &str) -> Result<Vec<AurComment>> {
comments::comments(self.client, pkgname).await
}
pub async fn pkgbuild(&self, package: &str) -> Result<String> {
pkgbuild::pkgbuild(self.client, package).await
}
}
#[cfg(feature = "aur")]
use async_trait::async_trait;
#[cfg(feature = "aur")]
#[async_trait]
impl AurApi for Aur<'_> {
async fn search(&self, query: &str) -> Result<Vec<AurPackage>> {
search::search(self.client, query).await
}
async fn info(&self, names: &[&str]) -> Result<Vec<AurPackageDetails>> {
info::info(self.client, names).await
}
async fn comments(&self, pkgname: &str) -> Result<Vec<AurComment>> {
comments::comments(self.client, pkgname).await
}
async fn pkgbuild(&self, package: &str) -> Result<String> {
pkgbuild::pkgbuild(self.client, package).await
}
}