summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-10-24 19:22:54 (GMT)
committerBrad King <brad.king@kitware.com>2018-12-12 11:40:10 (GMT)
commit7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8 (patch)
tree6e695983ccdc21351e806feabf6aac7c082e4c7a
parent276fdf299306f83b12bd1cc886f5e37d61f25c59 (diff)
downloadCMake-7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8.zip
CMake-7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8.tar.gz
CMake-7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8.tar.bz2
fileapi: Add helper to create and reference a json reply file
-rw-r--r--Source/cmFileAPI.cxx12
-rw-r--r--Source/cmFileAPI.h5
2 files changed, 17 insertions, 0 deletions
diff --git a/Source/cmFileAPI.cxx b/Source/cmFileAPI.cxx
index cf772d9..2fa5495 100644
--- a/Source/cmFileAPI.cxx
+++ b/Source/cmFileAPI.cxx
@@ -175,6 +175,18 @@ std::string cmFileAPI::WriteJsonFile(
return fileName;
}
+Json::Value cmFileAPI::MaybeJsonFile(Json::Value in, std::string const& prefix)
+{
+ Json::Value out;
+ if (in.isObject() || in.isArray()) {
+ out = Json::objectValue;
+ out["jsonFile"] = this->WriteJsonFile(in, prefix);
+ } else {
+ out = std::move(in);
+ }
+ return out;
+}
+
std::string cmFileAPI::ComputeSuffixHash(std::string const& file)
{
cmCryptoHash hasher(cmCryptoHash::AlgoSHA3_256);
diff --git a/Source/cmFileAPI.h b/Source/cmFileAPI.h
index 4f4506f..8bfae31 100644
--- a/Source/cmFileAPI.h
+++ b/Source/cmFileAPI.h
@@ -31,6 +31,11 @@ public:
/** Get the "cmake" instance with which this was constructed. */
cmake* GetCMakeInstance() const { return this->CMakeInstance; }
+ /** Convert a JSON object or array into an object with a single
+ "jsonFile" member specifying a file named with the given prefix
+ and holding the original object. Other JSON types are unchanged. */
+ Json::Value MaybeJsonFile(Json::Value in, std::string const& prefix);
+
private:
cmake* CMakeInstance;