pub(super) const NAMESPACES: &[(&str, Namespace)] = &[
("litany", Namespace::Litany),
("bl", Namespace::Bl),
("bz", Namespace::Bz),
("bl-delivery", Namespace::BlDelivery),
("bl-tracker", Namespace::BlTracker),
("gesture", Namespace::Gesture),
];
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(super) enum Namespace {
Litany,
Bl,
Bz,
BlDelivery,
BlTracker,
Gesture,
}
impl Namespace {
pub(super) fn from_arg(arg: &str) -> Option<Self> {
NAMESPACES
.iter()
.find(|(word, _)| *word == arg)
.map(|(_, namespace)| *namespace)
}
pub(super) fn owns_argv(self) -> bool {
match self {
Namespace::Litany
| Namespace::Bl
| Namespace::Bz
| Namespace::BlDelivery
| Namespace::BlTracker
| Namespace::Gesture => true,
}
}
pub(super) fn run(self, args: &[String]) -> i32 {
match self {
Namespace::Litany => super::litany::run(args),
Namespace::Bl => super::bl::run(args),
Namespace::Bz => super::bz::run(args),
Namespace::BlDelivery => super::bl_delivery::run(args),
Namespace::BlTracker => super::bl_tracker::run(args),
Namespace::Gesture => super::gesture::run(args),
}
}
}