diff --git a/examples/convert.rs b/examples/convert.rs index bd066a9f71..722e811c61 100644 --- a/examples/convert.rs +++ b/examples/convert.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use std::{env, fs}; +use std::{env, fs, path::Path}; #[derive(Hash, PartialEq, Eq, Serialize, Deserialize)] struct BindSource { @@ -29,8 +29,12 @@ fn main() { println!("Call with "); return; } - let in_ext_pos = args[1].rfind(".").expect("Input has no extension?"); - let module = match &args[1][in_ext_pos..] { + let ext = Path::new(&args[1]) + .extension() + .expect("Input has no extension?") + .to_str() + .unwrap(); + let module = match ext { "spv" => { let input = fs::read(&args[1]).unwrap(); naga::front::spv::parse_u8_slice(&input).unwrap() @@ -39,8 +43,32 @@ fn main() { let input = fs::read_to_string(&args[1]).unwrap(); naga::front::wgsl::parse_str(&input).unwrap() } - //#[cfg(feature = "glsl")] //TODO - //"glsl" | "vert" | "frag" | "comp" => {} + #[cfg(feature = "glsl")] + "vert" => { + let input = fs::read_to_string(&args[1]).unwrap(); + naga::front::glsl::parse_str(&input, "main".to_string(), spirv::ExecutionModel::Vertex) + .unwrap() + } + #[cfg(feature = "glsl")] + "frag" => { + let input = fs::read_to_string(&args[1]).unwrap(); + naga::front::glsl::parse_str( + &input, + "main".to_string(), + spirv::ExecutionModel::Fragment, + ) + .unwrap() + } + #[cfg(feature = "glsl")] + "comp" => { + let input = fs::read_to_string(&args[1]).unwrap(); + naga::front::glsl::parse_str( + &input, + "main".to_string(), + spirv::ExecutionModel::GLCompute, + ) + .unwrap() + } other => panic!("Unknown input extension: {}", other), };