use std::path::Path;
use serde::Serialize;
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize)]
pub(crate) enum WorkflowPresence {
Present,
#[default]
Missing,
}
impl WorkflowPresence {
pub const fn is_present(self) -> bool { matches!(self, Self::Present) }
}
pub(super) fn get_workflow_presence(repo_root: &Path) -> WorkflowPresence {
let workflows_dir = repo_root.join(".github").join("workflows");
let has_yaml = std::fs::read_dir(workflows_dir).is_ok_and(|entries| {
entries.filter_map(Result::ok).any(|entry| {
let name = entry.file_name();
let name = name.to_string_lossy();
name.ends_with(".yml") || name.ends_with(".yaml")
})
});
if has_yaml {
WorkflowPresence::Present
} else {
WorkflowPresence::Missing
}
}