#![allow(missing_docs)]
use super::deps::DepExpr;
use super::section::{ShellBody, SubpkgRef};
use super::text::Text;
pub const DEFAULT_FILE_TRIGGER_PRIORITY: u32 = 100_000;
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(deny_unknown_fields))]
pub struct Scriptlet<T = ()> {
pub kind: ScriptletKind,
pub subpkg: Option<SubpkgRef>,
pub interp: Option<Interpreter>,
pub expand_macros: bool,
pub quiet: bool,
pub from_file: Option<Text>,
pub body: ShellBody,
pub data: T,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum ScriptletKind {
Pre,
Post,
Preun,
Postun,
Pretrans,
Posttrans,
Preuntrans,
Postuntrans,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum Interpreter {
Path(Text),
Lua,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(deny_unknown_fields))]
pub struct Trigger<T = ()> {
pub kind: TriggerKind,
pub subpkg: Option<SubpkgRef>,
pub interp: Option<Interpreter>,
pub conditions: Vec<DepExpr>,
pub body: ShellBody,
pub data: T,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum TriggerKind {
Prein,
In,
Un,
Postun,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(deny_unknown_fields))]
pub struct FileTrigger<T = ()> {
pub kind: FileTriggerKind,
pub subpkg: Option<SubpkgRef>,
pub interp: Option<Interpreter>,
pub priority: Option<u32>,
pub prefixes: Vec<Text>,
pub body: ShellBody,
pub data: T,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum FileTriggerKind {
In,
Un,
Postun,
TransIn,
TransUn,
TransPostun,
}