aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/commandlineoptions.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-09-17 18:09:12 +0200
committerGitHub Enterprise <[email protected]>2025-09-17 18:09:12 +0200
commit59ae716aae73190e31ab3214ee69e825200e9f56 (patch)
tree61f3d4b65f012fe38611670c9db1ea2575e4c8a5 /src/zenutil/commandlineoptions.cpp
parentadd builds download force option (#498) (diff)
downloadzen-59ae716aae73190e31ab3214ee69e825200e9f56.tar.xz
zen-59ae716aae73190e31ab3214ee69e825200e9f56.zip
fix quoted wildcard options (#500)
* improve command line parsing to automatically remove quotes
Diffstat (limited to 'src/zenutil/commandlineoptions.cpp')
-rw-r--r--src/zenutil/commandlineoptions.cpp30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/zenutil/commandlineoptions.cpp b/src/zenutil/commandlineoptions.cpp
index afef7f6f2..040726c77 100644
--- a/src/zenutil/commandlineoptions.cpp
+++ b/src/zenutil/commandlineoptions.cpp
@@ -116,10 +116,15 @@ StripCommandlineQuotes(std::vector<std::string>& InOutArgs)
{
if (Arg.find('"', 1) == Arg.length() - 1)
{
- if (Arg.find(' ', 1) == std::string::npos)
- {
- Arg = Arg.substr(1, Arg.length() - 2);
- }
+ Arg = Arg.substr(1, Arg.length() - 2);
+ }
+ }
+ else if (Arg.ends_with("\""))
+ {
+ std::string::size_type EqualSign = Arg.find("=", 1);
+ if (EqualSign != std::string::npos && Arg[EqualSign + 1] == '\"')
+ {
+ Arg = Arg.substr(0, EqualSign + 1) + Arg.substr(EqualSign + 2, Arg.length() - (EqualSign + 2) - 1);
}
}
RawArgs.push_back(const_cast<char*>(Arg.c_str()));
@@ -209,12 +214,23 @@ TEST_CASE("CommandLine")
CHECK_EQ(v2Stripped[5], std::string("--namespace=ue.oplog"));
CHECK_EQ(v2Stripped[6], std::string("--bucket=citysample.packaged-build.fortnite-main.windows"));
CHECK_EQ(v2Stripped[7], std::string("c:\\just\\a\\path"));
- CHECK_EQ(v2Stripped[8], std::string("--access-token-path=\"C:\\Users\\dan.engelbrecht\\jupiter-token.json\""));
- CHECK_EQ(v2Stripped[9], std::string("\"D:\\Dev\\Spaced Folder\\Target\""));
- CHECK_EQ(v2Stripped[10], std::string("--alt-path=\"D:\\Dev\\Spaced Folder2\\Target\""));
+ CHECK_EQ(v2Stripped[8], std::string("--access-token-path=C:\\Users\\dan.engelbrecht\\jupiter-token.json"));
+ CHECK_EQ(v2Stripped[9], std::string("D:\\Dev\\Spaced Folder\\Target"));
+ CHECK_EQ(v2Stripped[10], std::string("--alt-path=D:\\Dev\\Spaced Folder2\\Target"));
CHECK_EQ(v2Stripped[11], std::string("07dn23ifiwesnvoasjncasab"));
CHECK_EQ(v2Stripped[12], std::string("--build-part-name"));
CHECK_EQ(v2Stripped[13], std::string("win64,linux,ps5"));
+
+ std::vector<std::string> v3 = ParseCommandLine(
+ "--tracehost \"127.0.0.1\" builds download --url=\"https://jupiter.devtools.epicgames.com\" --build-part-name=\"win64\"");
+ std::vector<char*> v3Stripped = StripCommandlineQuotes(v3);
+
+ CHECK_EQ(v3Stripped[0], std::string("--tracehost"));
+ CHECK_EQ(v3Stripped[1], std::string("127.0.0.1"));
+ CHECK_EQ(v3Stripped[2], std::string("builds"));
+ CHECK_EQ(v3Stripped[3], std::string("download"));
+ CHECK_EQ(v3Stripped[4], std::string("--url=https://jupiter.devtools.epicgames.com"));
+ CHECK_EQ(v3Stripped[5], std::string("--build-part-name=win64"));
}
#endif