diff --git a/assets/macos/archive/launch_modded.sh b/assets/macos/archive/launch_modded.sh index a470f8e7..5441a51e 100755 --- a/assets/macos/archive/launch_modded.sh +++ b/assets/macos/archive/launch_modded.sh @@ -1,7 +1,14 @@ #!/usr/bin/env bash # Compiles REDscript and launches the game. +set -euo pipefail game_dir=$(dirname "$(readlink -f "$0")") -"$game_dir/engine/tools/scc" -compile "$game_dir/r6/scripts" -"$game_dir/Cyberpunk2077.app/Contents/MacOS/Cyberpunk2077" +if ! "$game_dir/engine/tools/scc" -compile "$game_dir/r6/scripts"; then + message="REDscript compilation failed, the game was not launched. Check r6/logs/redscript_rCURRENT.log for details." + echo "$message" >&2 + osascript -e "display alert \"REDscript\" message \"$message\" as critical" >/dev/null 2>&1 || true + exit 1 +fi + +open "$game_dir/Cyberpunk2077.app" diff --git a/crates/scc/cli/src/main.rs b/crates/scc/cli/src/main.rs index 0f85b6c8..94658b0b 100644 --- a/crates/scc/cli/src/main.rs +++ b/crates/scc/cli/src/main.rs @@ -47,6 +47,7 @@ fn run(r6_dir: &Path, args: Option) -> anyhow::Result<()> { .context("missing 'settings_add_script_path'")?; let compile = api.compile.context("missing 'compile'")?; let free_result = api.free_result.context("missing 'free_result'")?; + let get_success = api.get_success.context("missing 'get_success'")?; let root = c_path(r6_dir)?; @@ -72,7 +73,12 @@ fn run(r6_dir: &Path, args: Option) -> anyhow::Result<()> { } let res = compile(settings); + let succeeded = !get_success(res).is_null(); free_result(res); + + if !succeeded { + std::process::exit(1); + } } Ok(())