diff options
author | Paul Wicking <paul.wicking@qt.io> | 2019-08-16 13:08:17 +0200 |
---|---|---|
committer | Paul Wicking <paul.wicking@qt.io> | 2019-08-22 05:27:05 +0200 |
commit | 3d544cbc55253dd35b3c7ccfd223b56de140aa84 (patch) | |
tree | e6b1f43fc0481ee9f08c83bdd7a169888bd2487b | |
parent | 2c6631a616630be59550bcb71029e550660d2407 (diff) |
QDoc: Remove QDocCommandLineParser's dependency on QDocGlobals
This change moves a large chunk of code from
QDocCommandLineParser::process() to a new method in QDocGlobals,
setOptions(), which takes a QDocCommandLineParser and updates
QDocGlobals accordingly. Two convenience methods are added to aid in
setting these parameters.
The change also removes the empty constructor in QDocGlobals, as it
isn't needed.
By now, QDocCommandLineParser no longer has external dependencies and
can therefore easily be unit-tested.
Task-number: QTBUG-71165
Task-number: QTBUG-71176
Change-Id: If67c841c3b0a2dbcc444bec92177e27e62288e6c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rw-r--r-- | src/qdoc/main.cpp | 3 | ||||
-rw-r--r-- | src/qdoc/qdoccommandlineparser.cpp | 36 | ||||
-rw-r--r-- | src/qdoc/qdoccommandlineparser.h | 2 | ||||
-rw-r--r-- | src/qdoc/qdocglobals.cpp | 51 | ||||
-rw-r--r-- | src/qdoc/qdocglobals.h | 9 |
5 files changed, 59 insertions, 42 deletions
diff --git a/src/qdoc/main.cpp b/src/qdoc/main.cpp index 3ce7ef9ea..39ad0c9a2 100644 --- a/src/qdoc/main.cpp +++ b/src/qdoc/main.cpp @@ -581,7 +581,8 @@ int main(int argc, char **argv) // Set the globals declared at the top of this file: QDocCommandLineParser parser; - parser.process(app.arguments(), qdocGlobals); + parser.process(app.arguments()); + qdocGlobals.setOptions(parser); config.setOptions(parser); postProcess(parser); diff --git a/src/qdoc/qdoccommandlineparser.cpp b/src/qdoc/qdoccommandlineparser.cpp index be8513e4b..33009c512 100644 --- a/src/qdoc/qdoccommandlineparser.cpp +++ b/src/qdoc/qdoccommandlineparser.cpp @@ -28,7 +28,6 @@ #include "qdoccommandlineparser.h" -#include "config.h" #include "loggingcategory.h" #include "utilities.h" @@ -179,44 +178,11 @@ static QStringList argumentsFromCommandLineAndFile(const QStringList &arguments) return allArguments; } -void QDocCommandLineParser::process(const QStringList &arguments, QDocGlobals &qdocGlobals) +void QDocCommandLineParser::process(const QStringList &arguments) { auto allArguments = argumentsFromCommandLineAndFile(arguments); QCommandLineParser::process(allArguments); - qdocGlobals.addDefine(values(defineOption)); - qdocGlobals.dependModules() += values(dependsOption); - qdocGlobals.enableHighlighting(isSet(highlightingOption)); - qdocGlobals.setShowInternal(isSet(showInternalOption)); - qdocGlobals.setSingleExec(isSet(singleExecOption)); - qdocGlobals.setWriteQaPages(isSet(writeQaPagesOption)); - qdocGlobals.setRedirectDocumentationToDevNull(isSet(redirectDocumentationToDevNullOption)); - - const auto indexDirs = values(indexDirOption); - for (const auto &indexDir : indexDirs) { - if (QFile::exists(indexDir)) - qdocGlobals.appendToIndexDirs(indexDir); - else - qDebug() << "Cannot find index directory" << indexDir; - } - qdocGlobals.setObsoleteLinks(isSet(obsoleteLinksOption)); - qdocGlobals.setNoLinkErrors(isSet(noLinkErrorsOption) || qEnvironmentVariableIsSet("QDOC_NOLINKERRORS")); - qdocGlobals.setAutolinkErrors(isSet(autoLinkErrorsOption)); - if (isSet(singleExecOption) && isSet(indexDirOption)) qDebug("WARNING: -indexdir option ignored: Index files are not used in single-exec mode."); - - QDir currentDir = QDir::current(); - const auto paths = values(includePathOption); - for (const auto &i : paths) - qdocGlobals.addIncludePath("-I", currentDir.absoluteFilePath(i)); - -#ifdef QDOC_PASS_ISYSTEM - const auto paths2 = values(includePathSystemOption); - for (const auto &i : paths2) - qdocGlobals.addIncludePath("-isystem", currentDir.absoluteFilePath(i)); -#endif - const auto paths3 = values(frameworkOption); - for (const auto &i : paths3) - qdocGlobals.addIncludePath("-F", currentDir.absoluteFilePath(i)); } diff --git a/src/qdoc/qdoccommandlineparser.h b/src/qdoc/qdoccommandlineparser.h index e669765a6..8756b6f54 100644 --- a/src/qdoc/qdoccommandlineparser.h +++ b/src/qdoc/qdoccommandlineparser.h @@ -38,7 +38,7 @@ QT_BEGIN_NAMESPACE struct QDocCommandLineParser : public QCommandLineParser { QDocCommandLineParser(); - void process(const QStringList &arguments, QDocGlobals &qdocGlobals); + void process(const QStringList &arguments); QCommandLineOption defineOption, dependsOption, highlightingOption; QCommandLineOption showInternalOption, redirectDocumentationToDevNullOption; diff --git a/src/qdoc/qdocglobals.cpp b/src/qdoc/qdocglobals.cpp index a79d47405..22e9beb70 100644 --- a/src/qdoc/qdocglobals.cpp +++ b/src/qdoc/qdocglobals.cpp @@ -27,10 +27,11 @@ ****************************************************************************/ #include "qdocglobals.h" +#include "qdoccommandlineparser.h" -QDocGlobals::QDocGlobals() -{ -} +#include <QtCore/qdebug.h> +#include <QtCore/qdir.h> +#include <QtCore/qfile.h> bool QDocGlobals::highlighting() { @@ -166,3 +167,47 @@ void QDocGlobals::setPreviousCurrentDir(const QString &path) m_previousCurrentDir = path; } +void QDocGlobals::setIncludePaths(const QDocCommandLineParser &parser) +{ + QDir currentDir = QDir::current(); + auto includePaths = parser.values(parser.includePathOption); + for (const auto &path : qAsConst(includePaths)) + addIncludePath("-I", currentDir.absoluteFilePath(path)); + +#ifdef QDOC_PASS_ISYSTEM + includePaths = parser.values(parser.includePathSystemOption); + for (const auto &path : qAsConst(includePaths)) + addIncludePath("-isystem", currentDir.absoluteFilePath(path)); +#endif + includePaths = parser.values(parser.frameworkOption); + for (const auto &path : qAsConst(includePaths)) + addIncludePath("-F", currentDir.absoluteFilePath(path)); +} + +void QDocGlobals::setIndexDirs(const QDocCommandLineParser &parser) +{ + const auto indexDirs = parser.values(parser.indexDirOption); + for (const auto &indexDir : indexDirs) { + if (QFile::exists(indexDir)) + appendToIndexDirs(indexDir); + else + qDebug() << "Cannot find index directory" << indexDir; + } +} + +void QDocGlobals::setOptions(const QDocCommandLineParser &parser) +{ + addDefine(parser.values(parser.defineOption)); + m_dependModules += parser.values(parser.dependsOption); + enableHighlighting(parser.isSet(parser.highlightingOption)); + setShowInternal(parser.isSet(parser.showInternalOption)); + setSingleExec(parser.isSet(parser.singleExecOption)); + setWriteQaPages(parser.isSet(parser.writeQaPagesOption)); + setRedirectDocumentationToDevNull(parser.isSet(parser.redirectDocumentationToDevNullOption)); + setIndexDirs(parser); + setObsoleteLinks(parser.isSet(parser.obsoleteLinksOption)); + setNoLinkErrors(parser.isSet(parser.noLinkErrorsOption) || + qEnvironmentVariableIsSet("QDOC_NOLINKERRORS")); + setAutolinkErrors(parser.isSet(parser.autoLinkErrorsOption)); + setIncludePaths(parser); +} diff --git a/src/qdoc/qdocglobals.h b/src/qdoc/qdocglobals.h index c849df19b..d1198db37 100644 --- a/src/qdoc/qdocglobals.h +++ b/src/qdoc/qdocglobals.h @@ -34,11 +34,12 @@ #include <QtCore/qtranslator.h> QT_BEGIN_NAMESPACE + +struct QDocCommandLineParser; + class QDocGlobals { public: - QDocGlobals(); - bool highlighting(); void enableHighlighting(bool value); @@ -80,8 +81,12 @@ public: QString previousCurrentDir(); void setPreviousCurrentDir(const QString &path); + void setOptions(const QDocCommandLineParser &parser); private: + void setIncludePaths(const QDocCommandLineParser &parser); + void setIndexDirs(const QDocCommandLineParser &parser); + bool m_highlighting = false; bool m_showInternal = false; bool m_singleExec = false; |