cargo-wgsl 0.0.1

Validate wgsl in rust projects
use naga::front::wgsl;
use std::path::Path;

use crate::wgsl_error::WgslError;

pub struct Validator {
    validator: naga::proc::Validator,
}

impl Validator {
    pub fn new() -> Self {
        Self {
            validator: naga::proc::Validator::new(),
        }
    }

    pub fn validate_wgsl(&mut self, path: &Path) -> Result<(), WgslError> {
        let shader = std::fs::read_to_string(&path).map_err(WgslError::from)?;
        let module = wgsl::parse_str(&shader).map_err(WgslError::from)?;

        if let Err(err) = self.validator.validate(&module) {
            Err(WgslError::ValidationErr(err))
        } else {
            Ok(())
        }
    }
}