diff options
Diffstat (limited to 'src/ebuild/mod.rs')
| -rw-r--r-- | src/ebuild/mod.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/ebuild/mod.rs b/src/ebuild/mod.rs new file mode 100644 index 0000000..2558cf4 --- /dev/null +++ b/src/ebuild/mod.rs @@ -0,0 +1,57 @@ +use get::Get; +use std::path::PathBuf; + +use crate::{ + atom::{Atom, Name, Slot, Version}, + useflag::{IUseFlag, UseFlag}, +}; + +pub mod parsers; + +#[derive(Clone, Debug)] +pub enum Conditional { + Negative(UseFlag), + Positive(UseFlag), +} + +#[derive(Clone, Debug)] +pub enum Depend<T> { + Element(T), + AllOf(Vec<Self>), + AnyOf(Vec<Self>), + OneOf(Vec<Self>), + ConditionalGroup(Conditional, Vec<Self>), +} + +#[derive(Debug, Clone, Get)] +pub struct SrcUri { + uri: String, + file_name: Option<PathBuf>, +} + +#[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<Slot>, + homepage: Option<String>, + src_uri: Vec<Depend<SrcUri>>, + eapi: Option<Eapi>, + inherit: Vec<Eclass>, + iuse: Vec<IUseFlag>, + license: Vec<Depend<License>>, + description: Option<String>, + depend: Vec<Depend<Atom>>, + bdepend: Vec<Depend<Atom>>, + rdpened: Vec<Depend<Atom>>, + idepend: Vec<Depend<Atom>>, +} |
