diff options
Diffstat (limited to 'src/lib/corelib/tools')
-rw-r--r-- | src/lib/corelib/tools/deprecationwarningmode.cpp | 98 | ||||
-rw-r--r-- | src/lib/corelib/tools/deprecationwarningmode.h | 59 | ||||
-rw-r--r-- | src/lib/corelib/tools/setupprojectparameters.cpp | 23 | ||||
-rw-r--r-- | src/lib/corelib/tools/setupprojectparameters.h | 4 | ||||
-rw-r--r-- | src/lib/corelib/tools/tools.pri | 3 |
5 files changed, 187 insertions, 0 deletions
diff --git a/src/lib/corelib/tools/deprecationwarningmode.cpp b/src/lib/corelib/tools/deprecationwarningmode.cpp new file mode 100644 index 000000000..e140e3e49 --- /dev/null +++ b/src/lib/corelib/tools/deprecationwarningmode.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "deprecationwarningmode.h" + +/*! + * \enum DeprecationWarningMode + * This enum type specifies how \QBS should behave on encountering deprecated items or properties. + * \value DeprecationWarningMode::Error Project resolving will stop with an error message. + * \value DeprecationWarningMode::On A warning will be printed. + * \value DeprecationWarningMode::BeforeRemoval A warning will be printed if and only if this is + * the last \QBS version before the removal version. This is the default behavior. + * \note If the removal version's minor version number is zero, the behavior is + * the same as for ErrorHandlingMode::On. + * \value DeprecationWarningMode::Off No warnings will be emitted for deprecated constructs. + */ + +namespace qbs { + +DeprecationWarningMode defaultDeprecationWarningMode() +{ + return DeprecationWarningMode::BeforeRemoval; +} + +QString deprecationWarningModeName(DeprecationWarningMode mode) +{ + switch (mode) { + case DeprecationWarningMode::Error: + return QStringLiteral("error"); + case DeprecationWarningMode::On: + return QStringLiteral("on"); + case DeprecationWarningMode::BeforeRemoval: + return QStringLiteral("before-removal"); + case DeprecationWarningMode::Off: + return QStringLiteral("off"); + default: + break; + } + return {}; +} + +DeprecationWarningMode deprecationWarningModeFromName(const QString &name) +{ + DeprecationWarningMode mode = defaultDeprecationWarningMode(); + for (int i = 0; i <= int(DeprecationWarningMode::Sentinel); ++i) { + if (deprecationWarningModeName(static_cast<DeprecationWarningMode>(i)) == name) { + mode = static_cast<DeprecationWarningMode>(i); + break; + } + } + return mode; +} + +QStringList allDeprecationWarningModeStrings() +{ + QStringList result; + for (int i = 0; i <= int(DeprecationWarningMode::Sentinel); ++i) + result << deprecationWarningModeName(static_cast<DeprecationWarningMode>(i)); + return result; +} + +} // namespace qbs diff --git a/src/lib/corelib/tools/deprecationwarningmode.h b/src/lib/corelib/tools/deprecationwarningmode.h new file mode 100644 index 000000000..bb2a14155 --- /dev/null +++ b/src/lib/corelib/tools/deprecationwarningmode.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBS_DEPRECATIONWARNINGMODE_H +#define QBS_DEPRECATIONWARNINGMODE_H + +#include "qbs_export.h" + +#include <QtCore/qstringlist.h> + +namespace qbs { + +enum class DeprecationWarningMode { Error, On, BeforeRemoval, Off, Sentinel = Off }; + +QBS_EXPORT DeprecationWarningMode defaultDeprecationWarningMode(); +QBS_EXPORT QString deprecationWarningModeName(DeprecationWarningMode mode); +QBS_EXPORT DeprecationWarningMode deprecationWarningModeFromName(const QString &name); +QBS_EXPORT QStringList allDeprecationWarningModeStrings(); + +} // namespace qbs + +#endif // QBS_DEPRECATIONWARNINGMODE_H + diff --git a/src/lib/corelib/tools/setupprojectparameters.cpp b/src/lib/corelib/tools/setupprojectparameters.cpp index a06ffc4bd..564ebe873 100644 --- a/src/lib/corelib/tools/setupprojectparameters.cpp +++ b/src/lib/corelib/tools/setupprojectparameters.cpp @@ -98,6 +98,7 @@ public: SetupProjectParameters::RestoreBehavior restoreBehavior; ErrorHandlingMode propertyCheckingMode; ErrorHandlingMode productErrorMode; + DeprecationWarningMode deprecationWarningMode = defaultDeprecationWarningMode(); QProcessEnvironment environment; }; @@ -125,6 +126,11 @@ template<> ErrorHandlingMode fromJson(const QJsonValue &v) return ErrorHandlingMode::Strict; } +template<> DeprecationWarningMode fromJson(const QJsonValue &v) +{ + return deprecationWarningModeFromName(v.toString()); +} + template<> SetupProjectParameters::RestoreBehavior fromJson(const QJsonValue &v) { const QString value = v.toString(); @@ -154,6 +160,7 @@ SetupProjectParameters SetupProjectParameters::fromJson(const QJsonObject &data) setValueFromJson(params.d->environment, data, "environment"); setValueFromJson(params.d->restoreBehavior, data, "restore-behavior"); setValueFromJson(params.d->propertyCheckingMode, data, "error-handling-mode"); + setValueFromJson(params.d->deprecationWarningMode, data, "deprecation-warning-mode"); params.d->productErrorMode = params.d->propertyCheckingMode; return params; } @@ -688,4 +695,20 @@ void SetupProjectParameters::setProductErrorMode(ErrorHandlingMode mode) d->productErrorMode = mode; } +/*! + * \brief Indicates how deprecated constructs are handled. + */ +DeprecationWarningMode SetupProjectParameters::deprecationWarningMode() const +{ + return d->deprecationWarningMode; +} + +/*! + * \brief Specifies the behavior on encountering deprecated constructs. + */ +void SetupProjectParameters::setDeprecationWarningMode(DeprecationWarningMode mode) +{ + d->deprecationWarningMode = mode; +} + } // namespace qbs diff --git a/src/lib/corelib/tools/setupprojectparameters.h b/src/lib/corelib/tools/setupprojectparameters.h index 2617a34cd..5c7bf3715 100644 --- a/src/lib/corelib/tools/setupprojectparameters.h +++ b/src/lib/corelib/tools/setupprojectparameters.h @@ -41,6 +41,7 @@ #include "qbs_export.h" +#include <tools/deprecationwarningmode.h> #include <tools/error.h> #include <QtCore/qshareddata.h> @@ -144,6 +145,9 @@ public: ErrorHandlingMode productErrorMode() const; void setProductErrorMode(ErrorHandlingMode mode); + DeprecationWarningMode deprecationWarningMode() const; + void setDeprecationWarningMode(DeprecationWarningMode mode); + private: QSharedDataPointer<Internal::SetupProjectParametersPrivate> d; }; diff --git a/src/lib/corelib/tools/tools.pri b/src/lib/corelib/tools/tools.pri index 1fdacc016..835fbbfda 100644 --- a/src/lib/corelib/tools/tools.pri +++ b/src/lib/corelib/tools/tools.pri @@ -13,6 +13,7 @@ HEADERS += \ $$PWD/clangclinfo.h \ $$PWD/codelocation.h \ $$PWD/commandechomode.h \ + $$PWD/deprecationwarningmode.h \ $$PWD/dynamictypecheck.h \ $$PWD/error.h \ $$PWD/executablefinder.h \ @@ -73,6 +74,7 @@ SOURCES += \ $$PWD/clangclinfo.cpp \ $$PWD/codelocation.cpp \ $$PWD/commandechomode.cpp \ + $$PWD/deprecationwarningmode.cpp \ $$PWD/error.cpp \ $$PWD/executablefinder.cpp \ $$PWD/fileinfo.cpp \ @@ -127,6 +129,7 @@ osx { $$PWD/cleanoptions.h \ $$PWD/codelocation.h \ $$PWD/commandechomode.h \ + $$PWD/deprecationwarningmode.h \ $$PWD/error.h \ $$PWD/generateoptions.h \ $$PWD/installoptions.h \ |