aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/zen/cmds/projectstore_cmd.cpp21
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();