summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-11-04 15:57:06 +0100
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-11-05 11:31:07 +0100
commit26b2436b737d7b140b0ed7b9620bd128ba375b15 (patch)
treed03dbb73d4dcb359acc5e55f507fcf9a7ffa45ed /tools
parent8c7d88e9c87a2afad0b75d7aab1bef3af45baa74 (diff)
Remove now superfluous tool, functionality ported to devtool.
Change-Id: I9c2a61ce5c141ac51df38be98c43477c7cc6ac20 Reviewed-by: Niels Weber <niels.weber@digia.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/getrepositorycontent/domnodedebugstreamoperator.cpp46
-rw-r--r--tools/getrepositorycontent/domnodedebugstreamoperator.h44
-rw-r--r--tools/getrepositorycontent/downloader.cpp118
-rw-r--r--tools/getrepositorycontent/downloader.h76
-rw-r--r--tools/getrepositorycontent/getrepositorycontent.pro23
-rw-r--r--tools/getrepositorycontent/main.cpp448
-rw-r--r--tools/getrepositorycontent/textprogressbar.cpp98
-rw-r--r--tools/getrepositorycontent/textprogressbar.h63
-rw-r--r--tools/tools.pro3
9 files changed, 1 insertions, 918 deletions
diff --git a/tools/getrepositorycontent/domnodedebugstreamoperator.cpp b/tools/getrepositorycontent/domnodedebugstreamoperator.cpp
deleted file mode 100644
index 7947e1dcd..000000000
--- a/tools/getrepositorycontent/domnodedebugstreamoperator.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/**************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Installer Framework.
-**
-** $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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/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 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-**
-** $QT_END_LICENSE$
-**
-**************************************************************************/
-
-#include "domnodedebugstreamoperator.h"
-
-QDebug operator<<(QDebug dbg, const QDomNode &domNode)
-{
- if (domNode.isNull())
- return dbg << "domNode is Null";
- QString debugOutput;
- QTextStream stream(&debugOutput);
- domNode.save(stream, 4);
-
- return dbg << debugOutput;
-}
diff --git a/tools/getrepositorycontent/domnodedebugstreamoperator.h b/tools/getrepositorycontent/domnodedebugstreamoperator.h
deleted file mode 100644
index 3b6b8c6bc..000000000
--- a/tools/getrepositorycontent/domnodedebugstreamoperator.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/**************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Installer Framework.
-**
-** $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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/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 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-**
-** $QT_END_LICENSE$
-**
-**************************************************************************/
-
-#ifndef DEBUGDOMNODE_H
-#define DEBUGDOMNODE_H
-
-#include <QDebug>
-#include <QDomNode>
-
-QDebug operator<<(QDebug dbg, const QDomNode &domNode);
-
-
-#endif // DEBUGDOMNODE_H
diff --git a/tools/getrepositorycontent/downloader.cpp b/tools/getrepositorycontent/downloader.cpp
deleted file mode 100644
index 0fd18fbe0..000000000
--- a/tools/getrepositorycontent/downloader.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "downloader.h"
-
-#include <fileutils.h>
-
-#include <QtNetwork/QNetworkProxy>
-
-class ProxyFactory : public KDUpdater::FileDownloaderProxyFactory
-{
-public:
- ProxyFactory() {}
-
- ProxyFactory *clone() const
- {
- return new ProxyFactory();
- }
-
- QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery())
- {
- return QNetworkProxyFactory::systemProxyForQuery(query);
- }
-};
-
-Downloader::Downloader(const QUrl &source, const QString &target)
- : QObject()
- , m_source(source)
- , m_target(target)
- , m_fileDownloader(0)
-{
- m_fileDownloader = KDUpdater::FileDownloaderFactory::instance().create(m_source.scheme(), this);
- if (!m_fileDownloader) {
- qWarning() << "No downloader registered for scheme: " << m_source.scheme();
- return;
- }
- m_fileDownloader->setDownloadedFileName(target);
-
- if (m_fileDownloader) {
- m_fileDownloader->setUrl(m_source);
- m_fileDownloader->setProxyFactory(new ProxyFactory());
-
- connect(m_fileDownloader, SIGNAL(downloadCanceled()), this, SLOT(downloadFinished()));
- connect(m_fileDownloader, SIGNAL(downloadCompleted()), this, SLOT(downloadFinished()));
- connect(m_fileDownloader, SIGNAL(downloadAborted(QString)), this, SLOT(downloadFinished(QString)));
-
- connect(m_fileDownloader, SIGNAL(downloadSpeed(qint64)), this, SLOT(downloadSpeed(qint64)));
- connect(m_fileDownloader, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(downloadProgress(qint64, qint64)));
-
- m_fileDownloader->setAutoRemoveDownloadedFile(false);
- }
-
-}
-
-void Downloader::downloadFinished(const QString &message)
-{
- if (!message.isEmpty())
- qDebug() << "Error:" << message;
- progressBar.setStatus(100, 100);
- progressBar.update();
- printf("\n");
- emit finished();
-}
-
-void Downloader::downloadSpeed(qint64 speed)
-{
- progressBar.setMessage(QString::fromLatin1("%1 /sec").arg(QInstaller::humanReadableSize(speed)));
-}
-
-void Downloader::downloadProgress(qint64 bytesReceived, qint64 bytesToReceive)
-{
- if (bytesReceived == 0 || bytesToReceive == 0)
- return;
- progressBar.setStatus(bytesReceived, bytesToReceive);
- progressBar.update();
-}
-
-void Downloader::run()
-{
- m_fileDownloader->download();
-}
diff --git a/tools/getrepositorycontent/downloader.h b/tools/getrepositorycontent/downloader.h
deleted file mode 100644
index bb4631bb9..000000000
--- a/tools/getrepositorycontent/downloader.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DOWNLOADER_H
-#define DOWNLOADER_H
-
-#include "textprogressbar.h"
-
-#include <kdupdaterfiledownloader.h>
-#include <kdupdaterfiledownloaderfactory.h>
-
-#include <QFile>
-#include <QObject>
-#include <QQueue>
-#include <QTime>
-#include <QUrl>
-#include <QNetworkAccessManager>
-
-class Downloader : public QObject
-{
- Q_OBJECT
-public:
- explicit Downloader(const QUrl &source, const QString &target);
- void run();
-signals:
- void finished();
-private slots:
- void downloadFinished(const QString &message = QString());
- void downloadSpeed(qint64 speed);
- void downloadProgress(qint64 bytesReceived, qint64 bytesToReceive);
-
-private:
- TextProgressBar progressBar;
- QUrl m_source;
- QString m_target;
- KDUpdater::FileDownloader *m_fileDownloader;
-};
-
-#endif // DOWNLOADER_H
diff --git a/tools/getrepositorycontent/getrepositorycontent.pro b/tools/getrepositorycontent/getrepositorycontent.pro
deleted file mode 100644
index 10433f209..000000000
--- a/tools/getrepositorycontent/getrepositorycontent.pro
+++ /dev/null
@@ -1,23 +0,0 @@
-TEMPLATE = app
-INCLUDEPATH += . ..
-TARGET = getrepositorycontent
-
-include(../../installerfw.pri)
-
-QT -= gui
-QT += network xml
-
-CONFIG += console
-DESTDIR = $$IFW_APP_PATH
-
-SOURCES += main.cpp \
- textprogressbar.cpp \
- downloader.cpp \
- domnodedebugstreamoperator.cpp
-
-HEADERS += \
- textprogressbar.h \
- downloader.h \
- domnodedebugstreamoperator.h
-
-macx:include(../../no_app_bundle.pri)
diff --git a/tools/getrepositorycontent/main.cpp b/tools/getrepositorycontent/main.cpp
deleted file mode 100644
index 04ace2d12..000000000
--- a/tools/getrepositorycontent/main.cpp
+++ /dev/null
@@ -1,448 +0,0 @@
-/**************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Installer Framework.
-**
-** $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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/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 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-**
-** $QT_END_LICENSE$
-**
-**************************************************************************/
-
-#include "downloader.h"
-#include "domnodedebugstreamoperator.h"
-
-#include <globals.h>
-#include <init.h>
-#include <fileutils.h>
-#include <lib7z_facade.h>
-#include <utils.h>
-
-#include <QCoreApplication>
-#include <QFile>
-#include <QUrl>
-#include <QString>
-#include <QDomDocument>
-#include <QDomElement>
-#include <QDomNodeList>
-#include <QStringList>
-#include <QDebug>
-#include <QFileInfo>
-#include <QDir>
-#include <QDirIterator>
-#include <QDebug>
-
-#include <iostream>
-
-static void printUsage()
-{
- const QString appName = QFileInfo( QCoreApplication::applicationFilePath() ).fileName();
- std::cout << "Usage: " << qPrintable(appName)
- << " --url <repository_url> --repository <empty_repository_dir> --packages <empty_packages_dir>" << std::endl;
- std::cout << " --url URL to fetch all the content from." << std::endl;
- std::cout << " --repository Target directory for the repository content." << std::endl;
- std::cout << " --packages The packages target directory where it creates the needed content to create new installers or repositories." << std::endl;
- std::cout << " --clean Removes all the content if there is an existing repository or packages dir" << std::endl;
- std::cout << " --only-metacontent Download only the meta content of the components." << std::endl;
-
- std::cout << "Example:" << std::endl;
- std::cout << " " << qPrintable(appName) << " --url http://www.example.com/repository/" <<
- " --repository repository --packages packages" << std::endl;
-}
-
-// this should be a new class which uses XmlStreamReader instead of DomDocument
-// should be implicit shared, see repository class
-// maybe we can use some code from persistentdata in qtcreator
-class ComponentData {
- public:
- ComponentData() {}
- ComponentData(const QString &/*xmlData*/) {}
-
- QVariant attributeValue(const QString &key, const QString &attribute, const QVariant &defaultValue = QVariant()) {
- Q_UNUSED(key)
- Q_UNUSED(attribute)
- return defaultValue;
- }
-
- QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) {
- Q_UNUSED(defaultValue)
- // just use the quick dirty hack added members
- if (key == QLatin1String("Script"))
- return m_script;
- if (key == QLatin1String("Version"))
- return m_version;
- return QVariant();
- }
- QString textValue(const QString &key, const QString &defaultValue = QString()) {
- return value(key, defaultValue).toString();
- }
-
- // quick dirty hack added public members
- public:
- QDomDocument m_packageXml;
- QStringList m_downloadDownloadableArchives;
- QString m_script;
- QString m_version;
-};
-
-static void downloadFile(const QUrl &source, const QString &target)
-{
- QEventLoop downloadEventLoop;
- Downloader downloader(source, target);
- QObject::connect(&downloader, SIGNAL(finished()), &downloadEventLoop, SLOT(quit()));
- downloader.run();
- downloadEventLoop.exec();
-}
-
-QHash<QString, ComponentData> downLoadRepository(const QString &repositoryUrl, const QString &repositoryTarget)
-{
- const QString updatesXmlFileName = QLatin1String("Updates.xml");
- QHash<QString, ComponentData> componentDataHash;
-
- const QUrl updatesXmlUrl(QString::fromLatin1("%1/%2").arg(repositoryUrl, updatesXmlFileName));
-
- downloadFile(updatesXmlUrl, QDir(repositoryTarget).filePath(updatesXmlFileName));
-
- QFile updatesFile(QDir(repositoryTarget).filePath(updatesXmlFileName));
- if (!updatesFile.exists()) {
- qDebug() << "could not download the file:" << updatesXmlUrl.toString();
- return componentDataHash;
- } else
- qDebug() << "file downloaded to location:" << QDir(repositoryTarget).filePath(updatesXmlFileName);
- if (!updatesFile.open(QIODevice::ReadOnly)) {
- qDebug() << QString::fromLatin1("Could not open Updates.xml for reading: %1").arg(updatesFile
- .errorString()) ;
- return componentDataHash;
- }
-
- QStringList ignoreTagList;
- ignoreTagList << QLatin1String("Name");
- ignoreTagList << QLatin1String("ReleaseDate");
- ignoreTagList << QLatin1String("SHA1");
- ignoreTagList << QLatin1String("UpdateFile");
- QStringList fileTagList;
- fileTagList << QLatin1String("DownloadableArchives");
-
-
- QDomDocument updatesXml;
- QString error;
- int line = 0;
- int column = 0;
- if (!updatesXml.setContent( &updatesFile, &error, &line, &column)) {
- qWarning() << QString::fromLatin1("Could not parse component index: %1:%2: %3")
- .arg(QString::number(line), QString::number(column), error);
- return componentDataHash;
- }
-
- QDomNode packageUpdateDomNode = updatesXml.firstChildElement(QLatin1String("Updates")).firstChildElement(
- QLatin1String("PackageUpdate"));
- while (!packageUpdateDomNode.isNull()) {
-
- if (packageUpdateDomNode.nodeName() == QLatin1String("PackageUpdate")) {
- QDomNode packageUpdateEntry = packageUpdateDomNode.firstChild();
- QString currentPackageName;
- ComponentData currentComponentData;
- // creating the package.xml for later use
- QDomElement currentNewPackageElement = currentComponentData.m_packageXml.createElement(
- QLatin1String("Package"));
- while (!packageUpdateEntry.isNull()) {
- // do name first before ignore filters the name out
- if (packageUpdateEntry.nodeName() == QLatin1String("Name")) {
- currentPackageName = packageUpdateEntry.toElement().text();
- }
- if (ignoreTagList.contains(packageUpdateEntry.nodeName())) {
- packageUpdateEntry = packageUpdateEntry.nextSibling();
- continue;
- }
- if (packageUpdateEntry.nodeName() == QLatin1String("Script")) {
- currentComponentData.m_script = packageUpdateEntry.toElement().text();
- }
- if (packageUpdateEntry.nodeName() == QLatin1String("Version")) {
- currentComponentData.m_version = packageUpdateEntry.toElement().text();
- currentComponentData.m_downloadDownloadableArchives.append(
- currentComponentData.m_version + QLatin1String("meta.7z"));
- }
-
- if (packageUpdateEntry.nodeName() == QLatin1String("DownloadableArchives")) {
- QStringList tDownloadList = packageUpdateEntry.toElement().text().split(
- QInstaller::commaRegExp(), QString::SkipEmptyParts);
- foreach (const QString &download, tDownloadList) {
- if (qApp->arguments().contains(QLatin1String("--only-metacontent"))) {
- qDebug() << "Skip download: <url> + " << currentPackageName + QLatin1String("/") + currentComponentData.m_version + download;
- } else {
- currentComponentData.m_downloadDownloadableArchives.append(
- currentComponentData.m_version + download);
- }
- currentComponentData.m_downloadDownloadableArchives.append(
- currentComponentData.m_version + download + QLatin1String(".sha1"));
- }
- }
-
- currentNewPackageElement.appendChild(packageUpdateEntry.cloneNode(true));
- packageUpdateEntry = packageUpdateEntry.nextSibling();
- }
- currentComponentData.m_packageXml.appendChild(currentNewPackageElement);
- Q_ASSERT(!currentComponentData.m_packageXml.toString().isEmpty());
- componentDataHash.insert(currentPackageName, currentComponentData);
- } else {
- qWarning() << QString::fromLatin1("Unknown elment '%1'").arg(packageUpdateDomNode.nodeName(),
- QFileInfo(updatesXmlFileName).absoluteFilePath());
- }
- packageUpdateDomNode = packageUpdateDomNode.nextSibling();
- }
-
- QHashIterator<QString, ComponentData> itComponentData(componentDataHash);
- while (itComponentData.hasNext()) {
- itComponentData.next();
- QString componentDirectory = QDir(repositoryTarget).filePath(itComponentData.key());
- if (!QDir().mkpath(componentDirectory))
- qWarning() << "could not create:" << componentDirectory;
-
- foreach (const QString &download, itComponentData.value().m_downloadDownloadableArchives) {
- const QString fileTarget(componentDirectory + QDir::separator() + download);
- const QUrl downloadUrl(repositoryUrl + QLatin1String("/") + itComponentData.key() + QLatin1String("/") + download);
- downloadFile(downloadUrl, fileTarget);
- }
- }
- return componentDataHash;
-}
-
-bool extractFile(const QString &source, const QString &target)
-{
- if (!Lib7z::isSupportedArchive(source)) {
- qWarning() << source << "is not a supported archive";
- }
-
- QFile archive(source);
- if (archive.open(QIODevice::ReadOnly)) {
- try {
- Lib7z::extractArchive(&archive, target);
- } catch (const Lib7z::SevenZipException& e) {
- qWarning() << QString::fromLatin1("Error while extracting %1: %2.").arg(source, e.message());
- return false;
- } catch (...) {
- qWarning() << QString::fromLatin1("Unknown exception caught while extracting %1.").arg(source);
- return false;
- }
- } else {
- qWarning() << QString::fromLatin1("Could not open %1 for reading: %2.").arg(
- target, archive.errorString());
- return false;
- }
- return true;
-}
-
-
-int main(int argc, char *argv[])
-{
- QCoreApplication app(argc, argv);
-
- // init installer to have the 7z lib initialized
- QInstaller::init();
- // with the installer messagehandler we need to enable verbose to see QDebugs
- QInstaller::setVerbose(true);
-
- QString repositoryUrl;
- QString repositoryTarget;
- QString packageDirectoryTarget;
- bool clean = false;
- QStringList args = app.arguments();
- QStringList::const_iterator itArgument = args.constBegin();
- itArgument++; // ignore the first one
- if (itArgument == args.constEnd()) {
- printUsage();
- return 0;
- }
-
- for (; itArgument != args.constEnd(); ++itArgument) {
- if (*itArgument == QString::fromLatin1("-h") || *itArgument == QString::fromLatin1("--help")) {
- printUsage();
- return 0;
- } else if (*itArgument == QString::fromLatin1("--only-metacontent")) {
- // just consume that argument, it will be used later via qApp->arguments
- } else if (*itArgument == QString::fromLatin1("--clean")) {
- clean = true;
- } else if (*itArgument == QString::fromLatin1("-u") || *itArgument == QString::fromLatin1("--url")) {
- ++itArgument;
- if (itArgument == args.end()) {
- printUsage();
- return -1;
- } else {
- repositoryUrl = *itArgument;
- }
- } else if (*itArgument == QString::fromLatin1("-r") || *itArgument == QString::fromLatin1("--repository")) {
- ++itArgument;
- if (itArgument == args.end()) {
- printUsage();
- return -1;
- } else {
- repositoryTarget = *itArgument;
- }
- } else if (*itArgument == QString::fromLatin1("-p") || *itArgument == QString::fromLatin1("--packages")) {
- ++itArgument;
- if (itArgument == args.end()) {
- printUsage();
- return -1;
- } else {
- packageDirectoryTarget = *itArgument;
- }
- } else {
- qWarning() << QString::fromLatin1("Argument '%1' is unknown").arg(*itArgument);
- printUsage();
- return 0;
- }
- }
- if (repositoryTarget.isEmpty() || packageDirectoryTarget.isEmpty()) {
- printUsage();
- return 0;
- } else {
- // resolve pathes
- repositoryTarget = QFileInfo(repositoryTarget).absoluteFilePath();
- packageDirectoryTarget = QFileInfo(packageDirectoryTarget).absoluteFilePath();
- }
-
- foreach (const QString &target, QStringList() << repositoryTarget << packageDirectoryTarget) {
- if (QFileInfo(target).exists()) {
- if (clean) {
- qDebug() << "removing directory:" << target;
- QInstaller::removeDirectory(target, true);
- } else if (!QDir(target).entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot).isEmpty()){
- qWarning() << QString::fromLatin1("The directory '%1' needs to be empty or just "
- "add the --clean argument.").arg(target);
- return EXIT_FAILURE;
- }
- }
-
- while (!QDir().mkpath(target)) {
- qWarning() << QString::fromLatin1("Could not create %1").arg(target);
- }
- }
-
- QHash<QString, ComponentData> componentDataHash;
- componentDataHash = downLoadRepository(repositoryUrl, repositoryTarget);
-
- // maybe in that case we should download the meta data to temp and
- // get the downdloadable archives information from there later
- if (packageDirectoryTarget.isEmpty())
- return EXIT_SUCCESS;
-
- QDirIterator itRepositoryFile(repositoryTarget, QDir::Files, QDirIterator::Subdirectories);
- while (itRepositoryFile.hasNext()) {
- QString currentFile = itRepositoryFile.next();
-
- QString componentSubdirectoryName = itRepositoryFile.filePath();
-
- QString normalizedRepositoryTarget = repositoryTarget;
- normalizedRepositoryTarget.replace(QLatin1Char('\\'), QLatin1Char('/'));
-
- componentSubdirectoryName.remove(repositoryTarget);
- componentSubdirectoryName.remove(normalizedRepositoryTarget);
-
- QString componentPackageDir = QFileInfo(packageDirectoryTarget + QDir::separator() + componentSubdirectoryName).absolutePath();
- QString absoluteSourceFilePath = itRepositoryFile.filePath();
-
- if (currentFile.endsWith(QLatin1String("meta.7z"))) {
- QString absolutTargetPath = QFileInfo(
- packageDirectoryTarget + QDir::separator()).absolutePath();
-
- extractFile(absoluteSourceFilePath, absolutTargetPath);
- QInstaller::moveDirectoryContents(componentPackageDir,
- componentPackageDir + QDir::separator() + QLatin1String("meta"));
- } else if (!currentFile.endsWith(QLatin1String("Updates.xml")) && !currentFile.endsWith(QLatin1String(".sha1"))){
- QString pathToTarget = componentPackageDir + QDir::separator() + QLatin1String("data");
- QString target = QDir(pathToTarget).absoluteFilePath(itRepositoryFile.fileName());
- QDir().mkpath(pathToTarget);
- QFile file;
- if (!file.copy(absoluteSourceFilePath, target)) {
- qWarning() << QString::fromLatin1("copy file %1 to %2 was not working %3").arg(
- absoluteSourceFilePath, target, file.errorString());
- }
- }
- }
-
-
- QHashIterator<QString, ComponentData> itComponentData(componentDataHash);
- while (itComponentData.hasNext()) {
- itComponentData.next();
-
- QString componentScript = QFileInfo(QString::fromLatin1("%1/%2/meta/%3").arg(
- packageDirectoryTarget, itComponentData.key(), itComponentData.value().m_script)).absoluteFilePath();
-
- QString packagesXml = QFileInfo(QString::fromLatin1("%1/%2/meta/package.xml").arg(
- packageDirectoryTarget, itComponentData.key())).absoluteFilePath();
-
- QFile packagesXmlFile(packagesXml);
-
- if (!packagesXmlFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
- qWarning() << QString::fromLatin1("Failed to open '%1' for writing. %2").arg(
- packagesXml, packagesXmlFile.errorString());
- return EXIT_FAILURE;
- }
-
- if (itComponentData.value().m_packageXml.toString().isEmpty()) {
- qWarning() << "No xml data found in component:" << itComponentData.key();
- return EXIT_FAILURE;
- }
-
- QTextStream stream(&packagesXmlFile);
- stream << itComponentData.value().m_packageXml.toString(4);
- packagesXmlFile.close();
-
- QString dataPackagesPath = QFileInfo(QString::fromLatin1("%1/%2/data").arg(
- packageDirectoryTarget, itComponentData.key())).absoluteFilePath();
- QDir().mkpath(dataPackagesPath);
-
- QString dataRepositoryPath = QFileInfo(repositoryTarget + QDir::separator() + itComponentData.key()).absoluteFilePath();
- QDir().mkpath(dataRepositoryPath);
-
- QFile componentScriptFile(componentScript);
- if (!itComponentData.value().m_script.isEmpty() && !componentScriptFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- qDebug() << QString::fromLatin1("Cannot read %1 %2").arg(componentScript, componentScriptFile.errorString());
- continue;
- }
-
- QString sevenZString;
- QTextStream in(&componentScriptFile);
- in.setCodec("UTF-8");
- while (!in.atEnd()) {
- QString line = in.readLine();
- if (line.contains(QLatin1String(".7z"))) {
- int firstPosition = line.indexOf(QLatin1String("\""));
- QString subString = line.right(line.count() - firstPosition - 1); //-1 means "
- //qDebug() << subString;
- int secondPosition = subString.indexOf(QLatin1String("\""));
- sevenZString = subString.left(secondPosition);
- QUrl downloadUrl((QStringList() << repositoryUrl << itComponentData.key() << itComponentData.value().m_version + sevenZString).join(QLatin1String("/")));
- QString localRepositoryTarget = dataRepositoryPath + QLatin1Char('/') + itComponentData.value().m_version + sevenZString;
- downloadFile(downloadUrl, localRepositoryTarget);
- downloadFile(QUrl(downloadUrl.toString() + QLatin1String(".sha1")), localRepositoryTarget + QLatin1String(".sha1"));
- QFile::copy(localRepositoryTarget, dataPackagesPath + QLatin1Char('/') + sevenZString);
- }
- }
- }
-
- return 0;
-}
diff --git a/tools/getrepositorycontent/textprogressbar.cpp b/tools/getrepositorycontent/textprogressbar.cpp
deleted file mode 100644
index 14faefd5e..000000000
--- a/tools/getrepositorycontent/textprogressbar.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "textprogressbar.h"
-#include <QByteArray>
-#include <stdio.h>
-
-TextProgressBar::TextProgressBar()
- : value(0), maximum(-1), iteration(0)
-{
-}
-
-void TextProgressBar::clear()
-{
- printf("\n");
- fflush(stdout);
-
- iteration = 0;
- value = 0;
- maximum = -1;
-}
-
-void TextProgressBar::update()
-{
- ++iteration;
-
- if (maximum > 0) {
- // we know the maximum
- // draw a progress bar
- int percent = value * 100 / maximum;
- int hashes = percent / 2;
-
- QByteArray progressbar(hashes, '#');
- if (percent % 2)
- progressbar += '>';
-
- printf("\r[%-50s] %3d%% %s ",
- progressbar.constData(),
- percent,
- qPrintable(message));
- } else {
- // we don't know the maximum, so we can't draw a progress bar
- int center = (iteration % 48) + 1; // 50 spaces, minus 2
- QByteArray before(qMax(center - 2, 0), ' ');
- QByteArray after(qMin(center + 2, 50), ' ');
-
- printf("\r[%s###%s] %s ",
- before.constData(), after.constData(), qPrintable(message));
- }
-}
-
-void TextProgressBar::setMessage(const QString &m)
-{
- message = m;
-}
-
-void TextProgressBar::setStatus(qint64 val, qint64 max)
-{
- value = val;
- maximum = max;
-}
diff --git a/tools/getrepositorycontent/textprogressbar.h b/tools/getrepositorycontent/textprogressbar.h
deleted file mode 100644
index 6f01f0c84..000000000
--- a/tools/getrepositorycontent/textprogressbar.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TEXTPROGRESSBAR_H
-#define TEXTPROGRESSBAR_H
-
-#include <QString>
-
-class TextProgressBar
-{
-public:
- TextProgressBar();
-
- void clear();
- void update();
- void setMessage(const QString &message);
- void setStatus(qint64 value, qint64 maximum);
-
-private:
- QString message;
- qint64 value;
- qint64 maximum;
- int iteration;
-};
-
-#endif
diff --git a/tools/tools.pro b/tools/tools.pro
index 0f1fdb3e3..25a646252 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
@@ -6,5 +6,4 @@ SUBDIRS += \
binarycreator \
repogen \
devtool \
- repocompare \
- getrepositorycontent
+ repocompare