#![allow(missing_docs)]
use super::cond::Conditional;
use super::deps::DepExpr;
use super::macros::Comment;
use super::text::Text;
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum PreambleContent<T = ()> {
Item(PreambleItem<T>),
Conditional(Conditional<T, PreambleContent<T>>),
Comment(Comment<T>),
Blank,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(deny_unknown_fields))]
pub struct PreambleItem<T = ()> {
pub tag: Tag,
pub qualifiers: Vec<TagQualifier>,
pub lang: Option<String>,
pub value: TagValue,
pub data: T,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum Tag {
Name,
Version,
Release,
Summary,
License,
URL,
Group,
Epoch,
Icon,
Source(Option<u32>),
Patch(Option<u32>),
NoSource(u32),
NoPatch(u32),
Requires,
BuildRequires,
Provides,
Conflicts,
Obsoletes,
Recommends,
Suggests,
Supplements,
Enhances,
BuildConflicts,
OrderWithRequires,
BuildArch,
ExclusiveArch,
ExcludeArch,
ExclusiveOS,
ExcludeOS,
BuildRoot,
Distribution,
Vendor,
Packager,
AutoReq,
AutoProv,
AutoReqProv,
Prefix,
Prefixes,
BugURL,
ModularityLabel,
VCS,
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum TagQualifier {
Pre,
Post,
Preun,
Postun,
Pretrans,
Posttrans,
Preuntrans,
Postuntrans,
Verify,
Interp,
Meta,
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum TagValue {
Text(Text),
Dep(DepExpr),
Bool(bool),
Number(u32),
ArchList(Vec<Text>),
}