summaryrefslogtreecommitdiffstats
path: root/src/qdoc/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/main.cpp')
-rw-r--r--src/qdoc/main.cpp110
1 files changed, 37 insertions, 73 deletions
diff --git a/src/qdoc/main.cpp b/src/qdoc/main.cpp
index e2ae550c1..48166257d 100644
--- a/src/qdoc/main.cpp
+++ b/src/qdoc/main.cpp
@@ -38,9 +38,7 @@
#include "location.h"
#include "loggingcategory.h"
#include "puredocparser.h"
-#include "qdoccommandlineparser.h"
#include "qdocdatabase.h"
-#include "qdocglobals.h"
#include "qmlcodemarker.h"
#include "qmlcodeparser.h"
#include "utilities.h"
@@ -79,7 +77,6 @@ static QList<Translator> translators;
#endif
static ClangCodeParser* clangParser_ = nullptr;
-static QDocGlobals qdocGlobals;
/*!
Read some XML indexes containing definitions from other
@@ -103,8 +100,8 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats)
Location::null.warning(QString("Index file not found: %1").arg(index));
}
- qdocGlobals.dependModules() += config.getStringList(CONFIG_DEPENDS);
- qdocGlobals.dependModules().removeDuplicates();
+ config.dependModules() += config.getStringList(CONFIG_DEPENDS);
+ config.dependModules().removeDuplicates();
QSet<QString> subDirs;
for (const auto &format : formats) {
@@ -118,41 +115,41 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats)
}
}
- if (qdocGlobals.dependModules().size() > 0) {
- if (qdocGlobals.indexDirs().size() > 0) {
- for (int i = 0; i < qdocGlobals.indexDirs().size(); i++) {
- if (qdocGlobals.indexDirs()[i].startsWith("..")) {
- const QString prefix(QDir(qdocGlobals.currentDir()).relativeFilePath(qdocGlobals.previousCurrentDir()));
+ if (config.dependModules().size() > 0) {
+ if (config.indexDirs().size() > 0) {
+ for (int i = 0; i < config.indexDirs().size(); i++) {
+ if (config.indexDirs()[i].startsWith("..")) {
+ const QString prefix(QDir(config.currentDir()).relativeFilePath(config.previousCurrentDir()));
if (!prefix.isEmpty())
- qdocGlobals.indexDirs()[i].prepend(prefix + QLatin1Char('/'));
+ config.indexDirs()[i].prepend(prefix + QLatin1Char('/'));
}
}
/*
Add all subdirectories of the indexdirs as dependModules,
when an asterisk is used in the 'depends' list.
*/
- if (qdocGlobals.dependModules().contains("*")) {
- qdocGlobals.dependModules().removeOne("*");
- for (int i = 0; i < qdocGlobals.indexDirs().size(); i++) {
- QDir scanDir = QDir(qdocGlobals.indexDirs()[i]);
+ if (config.dependModules().contains("*")) {
+ config.dependModules().removeOne("*");
+ for (int i = 0; i < config.indexDirs().size(); i++) {
+ QDir scanDir = QDir(config.indexDirs()[i]);
scanDir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
QFileInfoList dirList = scanDir.entryInfoList();
for (int j = 0; j < dirList.size(); j++) {
if (dirList[j].fileName().toLower() != config.getString(CONFIG_PROJECT).toLower())
- qdocGlobals.dependModules().append(dirList[j].fileName());
+ config.dependModules().append(dirList[j].fileName());
}
}
}
- for (int i = 0; i < qdocGlobals.dependModules().size(); i++) {
+ for (int i = 0; i < config.dependModules().size(); i++) {
QString indexToAdd;
QList<QFileInfo> foundIndices;
// Always look in module-specific subdir, even with *.nosubdirs config
- subDirs << qdocGlobals.dependModules()[i];
- for (int j = 0; j < qdocGlobals.indexDirs().size(); j++) {
+ subDirs << config.dependModules()[i];
+ for (int j = 0; j < config.indexDirs().size(); j++) {
for (const auto &subDir : subDirs) {
- QString fileToLookFor = qdocGlobals.indexDirs()[j]
+ QString fileToLookFor = config.indexDirs()[j]
+ QLatin1Char('/') + subDir
- + QLatin1Char('/') + qdocGlobals.dependModules()[i] + ".index";
+ + QLatin1Char('/') + config.dependModules()[i] + ".index";
if (QFile::exists(fileToLookFor)) {
QFileInfo tempFileInfo(fileToLookFor);
if (!foundIndices.contains(tempFileInfo))
@@ -160,7 +157,7 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats)
}
}
}
- subDirs.remove(qdocGlobals.dependModules()[i]);
+ subDirs.remove(config.dependModules()[i]);
std::sort(foundIndices.begin(), foundIndices.end(), creationTimeBefore);
if (foundIndices.size() > 1) {
/*
@@ -173,10 +170,10 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats)
for (const auto &found : qAsConst(foundIndices))
indexPaths << found.absoluteFilePath();
Location::null.warning(QString("Multiple index files found for dependency \"%1\":\n%2").arg(
- qdocGlobals.dependModules()[i], indexPaths.join('\n')));
+ config.dependModules()[i], indexPaths.join('\n')));
Location::null.warning(QString("Using %1 as index file for dependency \"%2\"").arg(
foundIndices[foundIndices.size() - 1].absoluteFilePath(),
- qdocGlobals.dependModules()[i]));
+ config.dependModules()[i]));
indexToAdd = foundIndices[foundIndices.size() - 1].absoluteFilePath();
}
else if (foundIndices.size() == 1) {
@@ -188,7 +185,7 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats)
}
else {
Location::null.warning(QString("\"%1\" Cannot locate index file for dependency \"%2\"").arg(
- config.getString(CONFIG_PROJECT), qdocGlobals.dependModules()[i]));
+ config.getString(CONFIG_PROJECT), config.dependModules()[i]));
}
}
}
@@ -206,7 +203,7 @@ static void loadIndexFiles(Config &config, const QSet<QString> &formats)
*/
static void processQdocconfFile(const QString &fileName, Config &config)
{
- qdocGlobals.setPreviousCurrentDir(QDir::currentPath());
+ config.setPreviousCurrentDir(QDir::currentPath());
/*
With the default configuration values in place, load
@@ -224,16 +221,11 @@ static void processQdocconfFile(const QString &fileName, Config &config)
Location::logToStdErrAlways(QLatin1String("qdoc can't run; no project set in qdocconf file"));
exit(1);
}
- /*
- Add the defines and includepaths to their respective configuration variables.
- */
- config.insertStringList(CONFIG_DEFINES, qdocGlobals.defines());
- config.insertStringList(CONFIG_INCLUDEPATHS, qdocGlobals.includesPaths());
Location::terminate();
- qdocGlobals.setCurrentDir(QFileInfo(fileName).path());
- if (!qdocGlobals.currentDir().isEmpty())
- QDir::setCurrent(qdocGlobals.currentDir());
+ config.setCurrentDir(QFileInfo(fileName).path());
+ if (!config.currentDir().isEmpty())
+ QDir::setCurrent(config.currentDir());
QString phase = " in ";
if (Generator::singleExec())
@@ -344,9 +336,9 @@ static void processQdocconfFile(const QString &fileName, Config &config)
else
clangParser_->setModuleHeader(project);
- qdocGlobals.dependModules() = config.getStringList(CONFIG_DEPENDS);
- qdocGlobals.dependModules().removeDuplicates();
- qdb->setSearchOrder(qdocGlobals.dependModules());
+ config.dependModules() = config.getStringList(CONFIG_DEPENDS);
+ config.dependModules().removeDuplicates();
+ qdb->setSearchOrder(config.dependModules());
// Store the title of the index (landing) page
NamespaceNode *root = qdb->primaryTreeRoot();
@@ -500,31 +492,11 @@ static void processQdocconfFile(const QString &fileName, Config &config)
Doc::terminate();
Tokenizer::terminate();
Location::terminate();
- QDir::setCurrent(qdocGlobals.previousCurrentDir());
+ QDir::setCurrent(config.previousCurrentDir());
qCDebug(lcQdoc, "qdoc classes terminated");
}
-/* This method is an extremely ugly hack;
- some or all of these settings must be set before the call to
- various initialize() methods in main's processQdocconfFile().
-*/
-void postProcess(const QDocCommandLineParser &parser)
-{
- if (parser.isSet(parser.prepareOption))
- Generator::setQDocPass(Generator::Prepare);
- if (parser.isSet(parser.generateOption))
- Generator::setQDocPass(Generator::Generate);
- if (parser.isSet(parser.singleExecOption))
- Generator::setSingleExec();
- if (parser.isSet(parser.writeQaPagesOption))
- Generator::setWriteQaPages();
- if (parser.isSet(parser.logProgressOption))
- Location::startLoggingProgress();
- if (parser.isSet(parser.timestampsOption))
- Generator::setUseTimestamps();
-}
-
QT_END_NAMESPACE
int main(int argc, char **argv)
@@ -566,41 +538,33 @@ int main(int argc, char **argv)
HtmlGenerator htmlGenerator;
WebXMLGenerator webXMLGenerator;
- Config config(QCoreApplication::translate("QDoc", "qdoc"));
-
- // Set the globals declared at the top of this file:
- QDocCommandLineParser parser;
- parser.process(app.arguments());
- qdocGlobals.setOptions(parser);
- config.setOptions(parser);
- postProcess(parser);
- config.setOptions(qdocGlobals);
+ Config config(QCoreApplication::translate("QDoc", "qdoc"), app.arguments());
// Get the list of files to act on:
- QStringList qdocFiles = parser.positionalArguments();
+ QStringList qdocFiles = config.qdocFiles();
if (qdocFiles.isEmpty())
- parser.showHelp();
+ config.showHelp();
- if (qdocGlobals.singleExec())
+ if (config.singleExec())
qdocFiles = Config::loadMaster(qdocFiles.at(0));
if (Generator::singleExec()) {
// single qdoc process for prepare and generate phases
Generator::setQDocPass(Generator::Prepare);
for (const auto &file : qAsConst(qdocFiles)) {
- qdocGlobals.dependModules().clear();
+ config.dependModules().clear();
processQdocconfFile(file, config);
}
Generator::setQDocPass(Generator::Generate);
QDocDatabase::qdocDB()->processForest();
for (const auto &file : qAsConst(qdocFiles)) {
- qdocGlobals.dependModules().clear();
+ config.dependModules().clear();
processQdocconfFile(file, config);
}
} else {
// separate qdoc processes for prepare and generate phases
for (const auto &file : qAsConst(qdocFiles)) {
- qdocGlobals.dependModules().clear();
+ config.dependModules().clear();
processQdocconfFile(file, config);
}
}