diff options
-rw-r--r-- | Source/cmFileAPI.cxx | 12 | ||||
-rw-r--r-- | Source/cmFileAPI.h | 5 |
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; |