#![allow(missing_docs)]
use super::changelog::ChangelogEntry;
use super::files::FilesContent;
use super::preamble::PreambleContent;
use super::scriptlet::{FileTrigger, Scriptlet, Trigger};
use super::text::Text;
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum Section<T = ()> {
Description {
subpkg: Option<SubpkgRef>,
body: TextBody,
data: T,
},
Package {
name_arg: PackageName,
content: Vec<PreambleContent<T>>,
data: T,
},
BuildScript {
kind: BuildScriptKind,
body: ShellBody,
data: T,
},
Files {
subpkg: Option<SubpkgRef>,
file_lists: Vec<Text>,
content: Vec<FilesContent<T>>,
data: T,
},
Scriptlet(Scriptlet<T>),
Trigger(Trigger<T>),
FileTrigger(FileTrigger<T>),
Verify {
subpkg: Option<SubpkgRef>,
body: ShellBody,
data: T,
},
Changelog {
entries: Vec<ChangelogEntry<T>>,
data: T,
},
SourceList {
entries: Vec<Text>,
data: T,
},
PatchList {
entries: Vec<Text>,
data: T,
},
Sepolicy {
subpkg: Option<SubpkgRef>,
body: ShellBody,
data: T,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum BuildScriptKind {
Prep,
Conf,
Build,
Install,
Check,
Clean,
GenerateBuildRequires,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum PackageName {
Relative(Text),
Absolute(Text),
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum SubpkgRef {
Relative(Text),
Absolute(Text),
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(deny_unknown_fields))]
pub struct TextBody {
pub lines: Vec<Text>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(deny_unknown_fields))]
pub struct ShellBody {
pub lines: Vec<Text>,
}