diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-12-17 06:45:27 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-12-17 06:45:27 +0000 |
| commit | c63c3e8c8c73ed7c036df7511ca190cdb96d92e2 (patch) | |
| tree | 3262ef318f03388d37ac28493e42c1638c227c27 /crates/repo/src/ebuild/mod.rs | |
| parent | 0ec856797256b5d9807929e1b32c03756eb43124 (diff) | |
| download | gentoo-utils-c63c3e8c8c73ed7c036df7511ca190cdb96d92e2.tar.gz | |
debuggingsplit-into-workspace
Diffstat (limited to 'crates/repo/src/ebuild/mod.rs')
| -rw-r--r-- | crates/repo/src/ebuild/mod.rs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/crates/repo/src/ebuild/mod.rs b/crates/repo/src/ebuild/mod.rs new file mode 100644 index 0000000..6c547c5 --- /dev/null +++ b/crates/repo/src/ebuild/mod.rs @@ -0,0 +1,83 @@ +use get::Get; + +use std::path::PathBuf; + +use atom::{Atom, Name, Slot, Version}; + +use useflag::{IUseFlag, UseFlag}; + +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)] +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<UriPrefix>, + uri: Uri, + filename: 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 { + pub(super) name: Name, + pub(super) version: Version, + pub(super) slot: Option<Slot>, + pub(super) homepage: Option<String>, + #[get(kind = "deref")] + pub(super) src_uri: Vec<Depend<SrcUri>>, + pub(super) eapi: Option<Eapi>, + #[get(kind = "deref")] + pub(super) inherit: Vec<Eclass>, + #[get(kind = "deref")] + pub(super) iuse: Vec<IUseFlag>, + #[get(kind = "deref")] + pub(super) license: Vec<Depend<License>>, + pub(super) description: Option<String>, + #[get(kind = "deref")] + pub(super) depend: Vec<Depend<Atom>>, + #[get(kind = "deref")] + pub(super) bdepend: Vec<Depend<Atom>>, + #[get(kind = "deref")] + pub(super) rdepend: Vec<Depend<Atom>>, + #[get(kind = "deref")] + pub(super) idepend: Vec<Depend<Atom>>, +} |
