From 7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 24 Oct 2018 15:22:54 -0400 Subject: fileapi: Add helper to create and reference a json reply file --- Source/cmFileAPI.cxx | 12 ++++++++++++ Source/cmFileAPI.h | 5 +++++ 2 files changed, 17 insertions(+) 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; -- cgit v0.12