Merge topic 'fileapi-config-dir'

1df94443fe fileapi: Add support for user-wide queries
a991a5019b Tests: Isolate test suite from user-wide configuration
320b81847d Tests: Remove unused cvs anonymous access credentials

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9744
This commit is contained in:
Brad King
2024-08-26 13:48:20 +00:00
committed by Kitware Robot
15 changed files with 79 additions and 7 deletions
+21 -2
View File
@@ -7,9 +7,13 @@
#include <chrono>
#include <ctime>
#include <iomanip>
#include <iterator>
#include <sstream>
#include <utility>
#include <cm/optional>
#include <cmext/string_view>
#include "cmsys/Directory.hxx"
#include "cmsys/FStream.hxx"
@@ -29,7 +33,12 @@ cmFileAPI::cmFileAPI(cmake* cm)
: CMakeInstance(cm)
{
this->APIv1 =
this->CMakeInstance->GetHomeOutputDirectory() + "/.cmake/api/v1";
cmStrCat(this->CMakeInstance->GetHomeOutputDirectory(), "/.cmake/api/v1");
if (cm::optional<std::string> cmakeConfigDir =
cmSystemTools::GetCMakeConfigDirectory()) {
this->UserAPIv1 = cmStrCat(std::move(*cmakeConfigDir), "/api/v1"_s);
}
Json::CharReaderBuilder rbuilder;
rbuilder["collectComments"] = false;
@@ -47,14 +56,24 @@ cmFileAPI::cmFileAPI(cmake* cm)
void cmFileAPI::ReadQueries()
{
std::string const query_dir = this->APIv1 + "/query";
std::string const query_dir = cmStrCat(this->APIv1, "/query");
std::string const user_query_dir = cmStrCat(this->UserAPIv1, "/query");
this->QueryExists = cmSystemTools::FileIsDirectory(query_dir);
if (!this->UserAPIv1.empty()) {
this->QueryExists =
this->QueryExists || cmSystemTools::FileIsDirectory(user_query_dir);
}
if (!this->QueryExists) {
return;
}
// Load queries at the top level.
std::vector<std::string> queries = cmFileAPI::LoadDir(query_dir);
if (!this->UserAPIv1.empty()) {
std::vector<std::string> user_queries = cmFileAPI::LoadDir(user_query_dir);
std::move(user_queries.begin(), user_queries.end(),
std::back_inserter(queries));
}
// Read the queries and save for later.
for (std::string& query : queries) {
+3
View File
@@ -61,6 +61,9 @@ private:
/** The api/v1 directory location. */
std::string APIv1;
/** api/v1 directory in the user's shared CMake config directory. */
std::string UserAPIv1;
/** The set of files we have just written to the reply directory. */
std::unordered_set<std::string> ReplyFiles;
+3 -1
View File
@@ -71,7 +71,7 @@ const cmDocumentationEntry cmDocumentationUsageNote = {
"Run 'cmake --help' for more information."
};
const cmDocumentationEntry cmDocumentationOptions[33] = {
const cmDocumentationEntry cmDocumentationOptions[34] = {
{ "--preset <preset>,--preset=<preset>", "Specify a configure preset." },
{ "--list-presets[=<type>]", "List available presets." },
{ "--workflow [<options>]", "Run a workflow preset." },
@@ -94,6 +94,8 @@ const cmDocumentationEntry cmDocumentationOptions[33] = {
"Generate graphviz of dependencies, see CMakeGraphVizOptions.cmake for "
"more." },
{ "--system-information [file]", "Dump information about this system." },
{ "--print-config-dir",
"Print CMake config directory for user-wide FileAPI queries." },
{ "--log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>",
"Set the verbosity of messages from CMake files. "
"--loglevel is also accepted for backward compatibility reasons." },