summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-10-24 15:22:54 -0400
committerBrad King <brad.king@kitware.com>2018-12-12 06:40:10 -0500
commit7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8 (patch)
tree6e695983ccdc21351e806feabf6aac7c082e4c7a /Source
parent276fdf299306f83b12bd1cc886f5e37d61f25c59 (diff)
downloadcmake-7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8.tar.gz
fileapi: Add helper to create and reference a json reply file
Diffstat (limited to 'Source')
-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 cf772d99fc..2fa5495a58 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 4f4506f0a9..8bfae318f9 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;