feat: Add validation command

This commit is contained in:
Gerald Pinder 2024-10-11 19:37:28 -04:00
parent 1de71ab026
commit 9a3ad0ae17
35 changed files with 1666 additions and 508 deletions

View file

@ -9,7 +9,7 @@ use miette::{bail, Result};
use serde::{Deserialize, Serialize};
use serde_yaml::Value;
use crate::{AkmodsInfo, ModuleExt};
use crate::{base_recipe_path, AkmodsInfo, ModuleExt};
#[derive(Serialize, Deserialize, Debug, Clone, Builder, Default)]
pub struct ModuleRequiredFields<'a> {
@ -80,6 +80,17 @@ impl<'a> ModuleRequiredFields<'a> {
}
}
#[must_use]
pub fn get_non_local_source(&'a self) -> Option<&'a str> {
let source = self.source.as_deref()?;
if source == "local" {
None
} else {
Some(source)
}
}
#[must_use]
pub fn generate_akmods_info(&'a self, os_version: &u64) -> AkmodsInfo {
#[derive(Debug, Copy, Clone)]
@ -164,7 +175,7 @@ pub struct Module<'a> {
pub from_file: Option<Cow<'a, str>>,
}
impl<'a> Module<'a> {
impl Module<'_> {
/// Get's any child modules.
///
/// # Errors
@ -202,7 +213,7 @@ impl<'a> Module<'a> {
traversed_files.push(file_name.clone());
Self::get_modules(
&ModuleExt::parse(&file_name)?.modules,
&ModuleExt::try_from(&file_name)?.modules,
Some(traversed_files),
)?
}
@ -224,6 +235,13 @@ impl<'a> Module<'a> {
Ok(found_modules)
}
#[must_use]
pub fn get_from_file_path(&self) -> Option<PathBuf> {
self.from_file
.as_ref()
.map(|path| base_recipe_path().join(&**path))
}
#[must_use]
pub fn example() -> Self {
Self::builder()