summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2024-11-06 14:58:37 +0100
committerHugo Locurcio <hugo.locurcio@hugo.pro>2024-11-06 15:01:40 +0100
commit8379cc85aad36c6224a7eb163773fe25ca3c811b (patch)
treeaa8f2702308483ad8880c40415476310a376ebc5
parent87318a2fb7fffeb72adca934e31915be077c3d1f (diff)
downloadredot-engine-8379cc85aad36c6224a7eb163773fe25ca3c811b.tar.gz
Warn on unknown command line arguments
This eases troubleshooting when working with command line arguments. Warnings are only printed if the argument does not exist as a file or directory path (relative or absolute). This allows positional arguments to keep working as they are now, without printing warnings when a project reads positional arguments to perform operations on files (e.g. when drag-and-dropping a file onto a project executable). This now prints a warning: godot --non-existent-argument This still doesn't print a warning, as it's an user argument: godot -- --non-existent-argument This doesn't print a warning if the file/folder path exists: godot /path/to/file.txt A warning is still printed if the file/folder doesn't exist. Drag-and-drop associations always refer to existing files/folders, so that scenario was unlikely to be encountered.
-rw-r--r--main/main.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/main/main.cpp b/main/main.cpp
index e8086db9d3..fb21ee502f 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1801,6 +1801,13 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
} else if (arg == "--" || arg == "++") {
adding_user_args = true;
} else {
+ if (!FileAccess::exists(arg) && !DirAccess::exists(arg)) {
+ // Warn if the argument isn't recognized by Godot *and* the file/folder
+ // specified by a positional argument doesn't exist.
+ // This allows projects to read file or folder paths as a positional argument
+ // without printing a warning, as this scenario can't make use of user command line arguments.
+ WARN_PRINT(vformat("Unknown command line argument \"%s\". User arguments should be passed after a -- or ++ separator, e.g. \"-- %s\".", arg, arg));
+ }
main_args.push_back(arg);
}