summaryrefslogtreecommitdiffstats
path: root/tools/common
diff options
context:
space:
mode:
authorNiels Weber <niels.weber@digia.com>2013-06-11 15:16:49 +0200
committerNiels Weber <niels.weber@digia.com>2013-06-11 16:29:27 +0200
commit3ddfcacc5179e8d035f04a2b363d3dbab6f6007e (patch)
tree59afb29e757da5a4be9bc6746e3bdbfd98325831 /tools/common
parentcbfc8fe905160bb1caf57a0f0231e0dff36be2a6 (diff)
Allow multiple package directories.
Task-number: QTIFW-24 Change-Id: I4e6e31457ecd63de7a2de98e35a7be00616151a5 Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'tools/common')
-rw-r--r--tools/common/repositorygen.cpp56
-rw-r--r--tools/common/repositorygen.h4
2 files changed, 32 insertions, 28 deletions
diff --git a/tools/common/repositorygen.cpp b/tools/common/repositorygen.cpp
index e820436fe..3c12187db 100644
--- a/tools/common/repositorygen.cpp
+++ b/tools/common/repositorygen.cpp
@@ -62,7 +62,7 @@ using namespace QInstallerTools;
void QInstallerTools::printRepositoryGenOptions()
{
std::cout << " -p|--packages dir The directory containing the available packages." << std::endl;
- std::cout << " Defaults to the current working directory." << std::endl;
+ std::cout << " This entry can be given multiple times." << std::endl;
std::cout << " -e|--exclude p1,...,pn Exclude the given packages." << std::endl;
std::cout << " -i|--include p1,...,pn Include the given packages and their dependencies" << std::endl;
@@ -364,7 +364,7 @@ void QInstallerTools::copyMetaData(const QString &_targetDir, const QString &met
QInstaller::blockingWrite(&targetUpdatesXml, doc.toByteArray());
}
-PackageInfoVector QInstallerTools::createListOfPackages(const QString &packagesDirectory,
+PackageInfoVector QInstallerTools::createListOfPackages(const QStringList &packagesDirectories,
const QStringList &filteredPackages, FilterType filterType)
{
qDebug() << "\nCollecting information about available packages...";
@@ -372,7 +372,9 @@ PackageInfoVector QInstallerTools::createListOfPackages(const QString &packagesD
bool ignoreInvalidPackages = qApp->arguments().contains(QString::fromLatin1("--ignore-invalid-packages"));
PackageInfoVector dict;
- const QFileInfoList entries = QDir(packagesDirectory).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
+ QFileInfoList entries;
+ foreach (const QString &packagesDirectory, packagesDirectories)
+ entries.append(QDir(packagesDirectory).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot));
for (QFileInfoList::const_iterator it = entries.begin(); it != entries.end(); ++it) {
if (filterType == Exclude) {
if (filteredPackages.contains(it->fileName()))
@@ -523,7 +525,7 @@ void QInstallerTools::compressMetaDirectories(const QString &repoDir, const QStr
existingUpdatesXml.close();
}
-void QInstallerTools::copyComponentData(const QString &packageDir, const QString &repoDir,
+void QInstallerTools::copyComponentData(const QStringList &packageDirs, const QString &repoDir,
PackageInfoVector *const infos)
{
for (int i = 0; i < infos->count(); ++i) {
@@ -539,31 +541,33 @@ void QInstallerTools::copyComponentData(const QString &packageDir, const QString
QStringList compressedFiles;
QStringList filesToCompress;
- const QDir dataDir(QString::fromLatin1("%1/%2/data").arg(packageDir, name));
- foreach (const QString &entry, dataDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Files)) {
- QFileInfo fileInfo(dataDir.absoluteFilePath(entry));
- if (fileInfo.isFile() && !fileInfo.isSymLink()) {
- const QString absoluteEntryFilePath = dataDir.absoluteFilePath(entry);
- if (Lib7z::isSupportedArchive(absoluteEntryFilePath)) {
- QFile tmp(absoluteEntryFilePath);
- QString target = QString::fromLatin1("%1/%3%2").arg(namedRepoDir, entry, info.version);
- qDebug() << QString::fromLatin1("Copying archive from '%1' to '%2'").arg(tmp.fileName(),
- target);
- if (!tmp.copy(target)) {
- throw QInstaller::Error(QString::fromLatin1("Could not copy '%1' to '%2': %3")
- .arg(tmp.fileName(), target, tmp.errorString()));
+ foreach (const QString &packageDir, packageDirs) {
+ const QDir dataDir(QString::fromLatin1("%1/%2/data").arg(packageDir, name));
+ foreach (const QString &entry, dataDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Files)) {
+ QFileInfo fileInfo(dataDir.absoluteFilePath(entry));
+ if (fileInfo.isFile() && !fileInfo.isSymLink()) {
+ const QString absoluteEntryFilePath = dataDir.absoluteFilePath(entry);
+ if (Lib7z::isSupportedArchive(absoluteEntryFilePath)) {
+ QFile tmp(absoluteEntryFilePath);
+ QString target = QString::fromLatin1("%1/%3%2").arg(namedRepoDir, entry, info.version);
+ qDebug() << QString::fromLatin1("Copying archive from '%1' to '%2'").arg(tmp.fileName(),
+ target);
+ if (!tmp.copy(target)) {
+ throw QInstaller::Error(QString::fromLatin1("Could not copy '%1' to '%2': %3")
+ .arg(tmp.fileName(), target, tmp.errorString()));
+ }
+ compressedFiles.append(target);
+ } else {
+ filesToCompress.append(absoluteEntryFilePath);
}
+ } else if (fileInfo.isDir()) {
+ qDebug() << "Compressing data directory" << entry;
+ QString target = QString::fromLatin1("%1/%3%2.7z").arg(namedRepoDir, entry, info.version);
+ QInstallerTools::compressPaths(QStringList() << dataDir.absoluteFilePath(entry), target);
compressedFiles.append(target);
- } else {
- filesToCompress.append(absoluteEntryFilePath);
+ } else if (fileInfo.isSymLink()) {
+ filesToCompress.append(dataDir.absoluteFilePath(entry));
}
- } else if (fileInfo.isDir()) {
- qDebug() << "Compressing data directory" << entry;
- QString target = QString::fromLatin1("%1/%3%2.7z").arg(namedRepoDir, entry, info.version);
- QInstallerTools::compressPaths(QStringList() << dataDir.absoluteFilePath(entry), target);
- compressedFiles.append(target);
- } else if (fileInfo.isSymLink()) {
- filesToCompress.append(dataDir.absoluteFilePath(entry));
}
}
diff --git a/tools/common/repositorygen.h b/tools/common/repositorygen.h
index 49a81eb1d..c90f8332f 100644
--- a/tools/common/repositorygen.h
+++ b/tools/common/repositorygen.h
@@ -68,7 +68,7 @@ void printRepositoryGenOptions();
QString makePathAbsolute(const QString &path);
void copyWithException(const QString &source, const QString &target, const QString &kind = QString());
-PackageInfoVector createListOfPackages(const QString &packagesDirectory, const QStringList &filteredPackages,
+PackageInfoVector createListOfPackages(const QStringList &packagesDirectory, const QStringList &filteredPackages,
FilterType ftype);
QHash<QString, QString> buildPathToVersionMapping(const PackageInfoVector &info);
@@ -78,7 +78,7 @@ void compressMetaDirectories(const QString &repoDir, const QString &baseDir,
void copyMetaData(const QString &outDir, const QString &dataDir, const PackageInfoVector &packages,
const QString &appName, const QString& appVersion, const QString &redirectUpdateUrl = QString());
-void copyComponentData(const QString &packageDir, const QString &repoDir, PackageInfoVector *const infos);
+void copyComponentData(const QStringList &packageDir, const QString &repoDir, PackageInfoVector *const infos);
} // namespace QInstallerTools