cargo-wgsl 0.0.1

Validate wgsl in rust projects
use colored::*;

use crate::wgsl_error::WgslError;
use std::path::Path;

pub struct OutputMessage {
    pub is_err: bool,
    pub text: String,
}

impl OutputMessage {
    pub fn success(path: &Path) -> Self {
        let succes = "Success".bright_green().bold();
        OutputMessage {
            is_err: false,
            text: format!("{} {}", succes, path.display()),
        }
    }

    pub fn error(path: &Path, error: WgslError) -> Self {
        let err_text = match error {
            WgslError::ParserErr {
                error,
                line,
                pos,
                scopes,
            } => {
                let arrow = "-->".blue();
                let location = format!("{}:{}:{}", path.display(), line, pos);
                let error = format!("{}: {}", "error".red().bold(), error);
                let scopes = format!("{}: {:#?}", "scopes".blue().bold(), scopes);

                format!("{} {}\n{}\n{}", arrow, location, error, scopes)
            }
            err => {
                format!("{} \n{:#?}", path.display(), err)
            }
        };

        Self {
            is_err: true,
            text: err_text,
        }
    }
}