diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-10-29 16:24:25 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-10-29 16:24:25 +0000 |
| commit | 8937e096a4b7eba649817d12d23d3e369a4a4f1d (patch) | |
| tree | 21f53e9d851666f19fde3ff045dfd41c9cf1805e /src/ebuild/mod.rs | |
| parent | b5765118fead09f3501e99bcb4cc19496912040d (diff) | |
| download | gentoo-utils-8937e096a4b7eba649817d12d23d3e369a4a4f1d.tar.gz | |
create ebuild module
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>>, +} |
