You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.8 KiB
69 lines
1.8 KiB
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#include "cmFileAPIConfigureLog.h"
|
|
|
|
#include <cm3p/json/value.h>
|
|
|
|
#include "cmFileAPI.h"
|
|
#include "cmStringAlgorithms.h"
|
|
#include "cmake.h"
|
|
|
|
namespace {
|
|
|
|
class ConfigureLog
|
|
{
|
|
cmFileAPI& FileAPI;
|
|
unsigned long Version;
|
|
|
|
Json::Value DumpPath();
|
|
Json::Value DumpEventKindNames();
|
|
|
|
public:
|
|
ConfigureLog(cmFileAPI& fileAPI, unsigned long version);
|
|
Json::Value Dump();
|
|
};
|
|
|
|
ConfigureLog::ConfigureLog(cmFileAPI& fileAPI, unsigned long version)
|
|
: FileAPI(fileAPI)
|
|
, Version(version)
|
|
{
|
|
static_cast<void>(this->Version);
|
|
}
|
|
|
|
Json::Value ConfigureLog::Dump()
|
|
{
|
|
Json::Value configureLog = Json::objectValue;
|
|
configureLog["path"] = this->DumpPath();
|
|
configureLog["eventKindNames"] = this->DumpEventKindNames();
|
|
return configureLog;
|
|
}
|
|
|
|
Json::Value ConfigureLog::DumpPath()
|
|
{
|
|
return cmStrCat(this->FileAPI.GetCMakeInstance()->GetHomeOutputDirectory(),
|
|
"/CMakeFiles/CMakeConfigureLog.yaml");
|
|
}
|
|
|
|
Json::Value ConfigureLog::DumpEventKindNames()
|
|
{
|
|
// Report at most one version of each event kind.
|
|
// If a new event kind is added, increment ConfigureLogV1Minor.
|
|
// If a new version of an existing event kind is added, a new
|
|
// major version of the configureLog object kind is needed.
|
|
Json::Value eventKindNames = Json::arrayValue;
|
|
if (this->Version == 1) {
|
|
eventKindNames.append("message-v1"); // WriteMessageEvent
|
|
eventKindNames.append("try_compile-v1"); // WriteTryCompileEvent
|
|
eventKindNames.append("try_run-v1"); // WriteTryRunEvent
|
|
}
|
|
return eventKindNames;
|
|
}
|
|
}
|
|
|
|
Json::Value cmFileAPIConfigureLogDump(cmFileAPI& fileAPI,
|
|
unsigned long version)
|
|
{
|
|
ConfigureLog configureLog(fileAPI, version);
|
|
return configureLog.Dump();
|
|
}
|