From: Joshua Simmons Date: Sat, 18 Oct 2025 21:39:41 +0000 (+0200) Subject: shark-shaders: Improve error handling for slang X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=1e9eb39a215b95028c97ad09dc2818f188ec8a23;p=josh%2Fnarcissus shark-shaders: Improve error handling for slang --- diff --git a/title/shark-shaders/build.rs b/title/shark-shaders/build.rs index 0e5ecec..fdf5832 100644 --- a/title/shark-shaders/build.rs +++ b/title/shark-shaders/build.rs @@ -95,7 +95,9 @@ fn main() { let mut slang_commands = SLANG_SHADERS .iter() .map(|SlangShader { name }| { - Command::new("slangc") + let mut command = Command::new("slangc"); + + let child = command .arg(format!("{SHADER_ROOT}/{name}.slang")) .args(["-target", "spirv"]) .args(["-profile", "spirv_1_6"]) @@ -108,7 +110,18 @@ fn main() { .args(["-depfile", &format!("{out_dir}/{name}.d")]) .args(["-o", &format!("{out_dir}/{name}.spv")]) .spawn() - .unwrap() + .expect("failed to launch `slangc`, is it in the path?"); + + let mut command_string = String::new(); + command_string.push_str("slangc"); + for arg in command.get_args() { + if let Some(arg) = arg.to_str() { + command_string.push(' '); + command_string.push_str(arg); + } + } + + (child, command_string) }) .collect::>(); @@ -155,11 +168,12 @@ fn main() { .unwrap(); } - for (mut command, shader) in slang_commands.drain(..).zip(SLANG_SHADERS.iter()) { - let status = command.wait().unwrap(); + for ((mut child, command_string), shader) in slang_commands.drain(..).zip(SLANG_SHADERS.iter()) + { + let status = child.wait().unwrap(); assert!( status.success(), - "shader '{}' failed to compile", + "shader '{}' failed to compile\n$ {command_string}", shader.name ); }