Skip to content

Commit

Permalink
Fix exit code of --help and --version, and test them in CI
Browse files Browse the repository at this point in the history
Corrects prior regression which caused ERROR output and exit code of 1.

(cherry picked from commit d38d76d)
  • Loading branch information
Bromeon authored and akien-mga committed Jul 8, 2022
1 parent da78e92 commit 861e155
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 4 deletions.
4 changes: 2 additions & 2 deletions main/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -497,12 +497,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // display help

show_help = true;
exit_code = OK;
exit_code = ERR_HELP; // Hack to force an early exit in `main()` with a success code.
goto error;

} else if (I->get() == "--version") {
print_line(get_full_version_string());
exit_code = OK;
exit_code = ERR_HELP; // Hack to force an early exit in `main()` with a success code.
goto error;

} else if (I->get() == "-v" || I->get() == "--verbose") { // verbose output
Expand Down
1 change: 1 addition & 0 deletions platform/android/java_godot_lib_jni.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setup(JNIEnv *env, jc
memfree(cmdline);
}

// Note: --help and --version return ERR_HELP, but this should be translated to 0 if exit codes are propagated.
if (err != OK) {
return; // should exit instead and print the error
}
Expand Down
5 changes: 4 additions & 1 deletion platform/iphone/godot_iphone.mm
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,10 @@ int iphone_main(int argc, char **argv, String data_dir, String cache_dir) {
printf("os created\n");
Error err = Main::setup(fargv[0], argc - 1, &fargv[1], false);
printf("setup %i\n", err);
if (err != OK) {

if (err == ERR_HELP) { // Returned by --help and --version, so success.
return 0;
} else if (err != OK) {
return 255;
}

Expand Down
5 changes: 4 additions & 1 deletion platform/osx/godot_main_osx.mm
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,11 @@ int main(int argc, char **argv) {
err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]);
}

if (err != OK)
if (err == ERR_HELP) { // Returned by --help and --version, so success.
return 0;
} else if (err != OK) {
return 255;
}

if (Main::start())
os.run(); // it is actually the OS that decides how to run
Expand Down
4 changes: 4 additions & 0 deletions platform/windows/godot_windows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ __declspec(dllexport) int widechar_main(int argc, wchar_t **argv) {
delete[] argv_utf8[i];
}
delete[] argv_utf8;

if (err == ERR_HELP) { // Returned by --help and --version, so success.
return 0;
}
return 255;
}

Expand Down
4 changes: 4 additions & 0 deletions platform/x11/godot_x11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ int main(int argc, char *argv[]) {
Error err = Main::setup(argv[0], argc - 1, &argv[1]);
if (err != OK) {
free(cwd);

if (err == ERR_HELP) { // Returned by --help and --version, so success.
return 0;
}
return 255;
}

Expand Down

0 comments on commit 861e155

Please sign in to comment.