use get::Get; use std::path::PathBuf; use crate::{ atom::{Atom, Name, Slot, Version}, useflag::{IUseFlag, UseFlag}, }; pub mod parsers; pub mod repo; #[derive(Clone, Debug)] pub enum Conditional { Negative(UseFlag), Positive(UseFlag), } #[derive(Clone, Debug)] pub enum Depend { Element(T), AllOf(Vec), AnyOf(Vec), OneOf(Vec), ConditionalGroup(Conditional, Vec), } #[derive(Debug, Clone)] pub enum UriPrefix { Mirror, Fetch, } #[derive(Debug, Clone, Get)] pub struct Uri { #[get(kind = "deref")] protocol: String, #[get(kind = "deref")] path: String, } #[derive(Debug, Clone)] pub enum SrcUri { Filename(PathBuf), Uri { prefix: Option, uri: Uri, filename: Option, }, } #[derive(Debug, Clone, Get)] pub struct License(#[get(method = "get", kind = "deref")] String); #[derive(Debug, Clone, Get)] pub struct Eapi(#[get(method = "get", kind = "deref")] String); #[derive(Debug, Clone, Get)] pub struct Eclass(#[get(method = "get", kind = "deref")] String); #[derive(Debug, Clone, Get)] pub struct Ebuild { name: Name, version: Version, slot: Option, homepage: Option, #[get(kind = "deref")] src_uri: Vec>, eapi: Option, #[get(kind = "deref")] inherit: Vec, #[get(kind = "deref")] iuse: Vec, #[get(kind = "deref")] license: Vec>, description: Option, #[get(kind = "deref")] depend: Vec>, #[get(kind = "deref")] bdepend: Vec>, #[get(kind = "deref")] rdepend: Vec>, #[get(kind = "deref")] idepend: Vec>, }