@ -5716,27 +5716,24 @@ async fn shell_impl_async(
process . wait_with_output ( ) . await ?
} ;
if ! output . status . success ( ) {
if ! output . stderr . is_empty ( ) {
let err = String ::from_utf8_lossy ( & output . stderr ) . to_string ( ) ;
log ::error ! ( "Shell error: {}" , err ) ;
bail ! ( "Shell error: {}" , err ) ;
}
let output = if ! output . status . success ( ) {
if output . stderr . is_empty ( ) {
match output . status . code ( ) {
Some ( exit_code ) = > bail ! ( "Shell command failed: status {}" , exit_code ) ,
None = > bail ! ( "Shell command failed" ) ,
}
} else if ! output . stderr . is_empty ( ) {
log ::debug ! (
"Command printed to stderr: {}" ,
String ::from_utf8_lossy ( & output . stderr ) . to_string ( )
) ;
}
String ::from_utf8_lossy ( & output . stderr )
// Prioritize `stderr` output over `stdout`
} else if ! output . stderr . is_empty ( ) {
let stderr = String ::from_utf8_lossy ( & output . stderr ) ;
log ::debug ! ( "Command printed to stderr: {stderr}" ) ;
stderr
} else {
String ::from_utf8_lossy ( & output . stdout )
} ;
let str = std ::str ::from_utf8 ( & output . stdout )
. map_err ( | _ | anyhow ! ( "Process did not output valid UTF-8" ) ) ? ;
let tendril = Tendril ::from ( str ) ;
Ok ( tendril )
Ok ( Tendril ::from ( output ) )
}
fn shell ( cx : & mut compositor ::Context , cmd : & str , behavior : & ShellBehavior ) {