diff options
| author | Dan Engelbrecht <[email protected]> | 2025-09-17 18:09:12 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-09-17 18:09:12 +0200 |
| commit | 59ae716aae73190e31ab3214ee69e825200e9f56 (patch) | |
| tree | 61f3d4b65f012fe38611670c9db1ea2575e4c8a5 /src/zenutil/commandlineoptions.cpp | |
| parent | add builds download force option (#498) (diff) | |
| download | zen-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.cpp | 30 |
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 |