diff options
| author | Liam Mitchell <[email protected]> | 2025-01-14 16:21:18 -0800 |
|---|---|---|
| committer | Liam Mitchell <[email protected]> | 2025-01-14 16:21:18 -0800 |
| commit | b526b564bc9c516f2f8aec42530b96eb70b01ba8 (patch) | |
| tree | d62ba6611501b40527dc7233e2b13dfbea7281ad | |
| parent | 5.5.17-pre1 (diff) | |
| download | zen-lm/builds-metadata-integer-changelist.tar.xz zen-lm/builds-metadata-integer-changelist.zip | |
Add builds metadata changelist/codeChangelist parameters as integers rather than strings, to allow proper searching via Jupiter APIslm/builds-metadata-integer-changelist
| -rw-r--r-- | src/zen/cmds/projectstore_cmd.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/zen/cmds/projectstore_cmd.cpp b/src/zen/cmds/projectstore_cmd.cpp index 5e18a3624..fb54098d9 100644 --- a/src/zen/cmds/projectstore_cmd.cpp +++ b/src/zen/cmds/projectstore_cmd.cpp @@ -1277,7 +1277,26 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg { throw std::runtime_error(fmt::format("builds metadata key-value pair '{}' is malformed", Pair)); } - MetaDataWriter.AddString(Pair.substr(0, SplitPos), Pair.substr(SplitPos + 1)); + + const std::string_view Key = Pair.substr(0, SplitPos); + const std::string_view Value = Pair.substr(SplitPos + 1); + + if (Key == "changelist" || Key == "codeChangelist") + { + uint32_t ParsedValue; + std::from_chars_result Result = std::from_chars(Value.data(), Value.data() + Value.size(), ParsedValue); + if (Result.ec != std::errc()) + { + throw std::runtime_error(fmt::format("invalid value for changelist {}, expected integer", Value)); + } + + MetaDataWriter.AddInteger(Key, ParsedValue); + } + else + { + MetaDataWriter.AddString(Key, Value); + } + return true; }); CbObject MetaData = MetaDataWriter.Save(); |