From c0a0daf5887e0e68a6730b19bb0d7e879c2d2299 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 23 Aug 2022 15:42:37 +0200 Subject: [PATCH] Environment: Add convenience wrappers similar to qEnvironmentVariable* Adds corresponding wrappers that work on Environment::systemEnvironment(), which can be different to the environment that Qt Creator currently runs in, depending on the settings in Preferences > Environment > System > Environment. Change-Id: Ib1db37d2828b686d9a3233d170612beea9d12946 Reviewed-by: hjk Reviewed-by: --- src/libs/utils/environment.cpp | 55 ++++++++++++++++++++++++++++++++++ src/libs/utils/environment.h | 6 ++++ 2 files changed, 61 insertions(+) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 3220fe4a83b..8adf2e81fb9 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -495,4 +495,59 @@ void EnvironmentChange::applyToEnvironment(Environment &env) const } } +/*! + Returns the value of \a key in \QC's modified system environment. + \sa Utils::Environment::systemEnvironment + \sa qEnvironmentVariable +*/ +QString qtcEnvironmentVariable(const QString &key) +{ + return Environment::systemEnvironment().value(key); +} + +/*! + Returns the value of \a key in \QC's modified system environment if it is set, + or otherwise \a defaultValue. + \sa Utils::Environment::systemEnvironment + \sa qEnvironmentVariable +*/ +QString qtcEnvironmentVariable(const QString &key, const QString &defaultValue) +{ + if (Environment::systemEnvironment().hasKey(key)) + return Environment::systemEnvironment().value(key); + return defaultValue; +} + +/*! + Returns if the environment variable \a key is set \QC's modified system environment. + \sa Utils::Environment::systemEnvironment + \sa qEnvironmentVariableIsSet +*/ +bool qtcEnvironmentVariableIsSet(const QString &key) +{ + return Environment::systemEnvironment().hasKey(key); +} + +/*! + Returns if the environment variable \a key is not set or empty in \QC's modified system + environment. + \sa Utils::Environment::systemEnvironment + \sa qEnvironmentVariableIsEmpty +*/ +bool qtcEnvironmentVariableIsEmpty(const QString &key) +{ + return Environment::systemEnvironment().value(key).isEmpty(); +} + +/*! + Returns the value of \a key in \QC's modified system environment, converted to an int. + If \a ok is not null, sets \c{*ok} to true or false depending on the success of the conversion + \sa Utils::Environment::systemEnvironment + \sa qEnvironmentVariableIntValue +*/ +int qtcEnvironmentVariableIntValue(const QString &key, bool *ok) +{ + return Environment::systemEnvironment().value(key).toInt(ok); +} + } // namespace Utils diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h index 13fab9605f2..0e2193b08ee 100644 --- a/src/libs/utils/environment.h +++ b/src/libs/utils/environment.h @@ -175,6 +175,12 @@ public: static optional provider(const QByteArray &id); }; +QString qtcEnvironmentVariable(const QString &key); +QString qtcEnvironmentVariable(const QString &key, const QString &defaultValue); +bool qtcEnvironmentVariableIsSet(const QString &key); +bool qtcEnvironmentVariableIsEmpty(const QString &key); +int qtcEnvironmentVariableIntValue(const QString &key, bool *ok = nullptr); + } // namespace Utils Q_DECLARE_METATYPE(Utils::Environment)