aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Tillmanns <[email protected]>2025-07-01 09:03:27 +0200
committerMarcus Tillmanns <[email protected]>2025-07-01 12:26:43 +0000
commit859a48241e78de46ddea5e1366b26c95c4ea1610 (patch)
tree77a7e2bb387b030bd9ffdf4b9c7390fc7e927baa
parentb27320ab3e8b76b11fbfb0b1fe230c99d2c2af3b (diff)
Devcontainer: Add accessor for customizationsHEADmaster
-rw-r--r--src/libs/devcontainer/devcontainerconfig.cpp23
-rw-r--r--src/libs/devcontainer/devcontainerconfig.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/src/libs/devcontainer/devcontainerconfig.cpp b/src/libs/devcontainer/devcontainerconfig.cpp
index 5b0d2c475fd..d4fa673620f 100644
--- a/src/libs/devcontainer/devcontainerconfig.cpp
+++ b/src/libs/devcontainer/devcontainerconfig.cpp
@@ -132,6 +132,29 @@ Result<DevContainer::Config> DevContainer::Config::fromJson(
return config;
}
+QJsonValue customization(const Config &config, const QString &path)
+{
+ QJsonObject current = config.common.customizations;
+ const QStringList parts = path.split(QLatin1Char('/'));
+
+ for (auto it = parts.cbegin(); it != parts.cend(); ++it) {
+ auto itChild = current.constFind(*it);
+ if (itChild == current.end())
+ return QJsonValue();
+
+ if (it + 1 == parts.end())
+ return *itChild;
+
+ if (!itChild.value().isObject()) {
+ // If the child is not an object, we cannot continue
+ return QJsonValue();
+ }
+ current = itChild.value().toObject();
+ }
+
+ return QJsonValue();
+}
+
Result<DevContainer::DevContainerCommon> DevContainer::DevContainerCommon::fromJson(
const QJsonObject &json, const JsonStringToString &jsonStringToString)
{
diff --git a/src/libs/devcontainer/devcontainerconfig.h b/src/libs/devcontainer/devcontainerconfig.h
index 3cc0bf5a712..8b5e8867a67 100644
--- a/src/libs/devcontainer/devcontainerconfig.h
+++ b/src/libs/devcontainer/devcontainerconfig.h
@@ -240,6 +240,9 @@ struct DEVCONTAINER_EXPORT Config
const QByteArray &data, const JsonStringToString &jsonStringToString);
};
+//! Returns a QJsonValue for the specified path. e.g.: customization(config, "qt-creator/device/mount-cmd-bridge")
+DEVCONTAINER_EXPORT QJsonValue customization(const Config &config, const QString &path);
+
// QDebug stream operators for all DevContainer structures
DEVCONTAINER_EXPORT QDebug operator<<(QDebug debug, const DevContainer::OnAutoForward &value);
DEVCONTAINER_EXPORT QDebug operator<<(QDebug debug, const DevContainer::ShutdownAction &value);