diff options
| -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(); |