diff options
author | Marcus Tillmanns <[email protected]> | 2025-07-01 09:03:27 +0200 |
---|---|---|
committer | Marcus Tillmanns <[email protected]> | 2025-07-01 12:26:43 +0000 |
commit | 859a48241e78de46ddea5e1366b26c95c4ea1610 (patch) | |
tree | 77a7e2bb387b030bd9ffdf4b9c7390fc7e927baa | |
parent | b27320ab3e8b76b11fbfb0b1fe230c99d2c2af3b (diff) |
Change-Id: I17f4473b592ae10501e79209fc98a4eb3d766b90
Reviewed-by: hjk <[email protected]>
-rw-r--r-- | src/libs/devcontainer/devcontainerconfig.cpp | 23 | ||||
-rw-r--r-- | src/libs/devcontainer/devcontainerconfig.h | 3 |
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); |