diff --git a/Deploy/Distributions/defaultdistro.cpp b/Deploy/Distributions/defaultdistro.cpp index 804dc7a..69d69b8 100644 --- a/Deploy/Distributions/defaultdistro.cpp +++ b/Deploy/Distributions/defaultdistro.cpp @@ -11,7 +11,7 @@ QString DefaultDistro::getConfig() const{ return ":/Distro/Distributions/configures/C and C++.json"; } -void DefaultDistro::deployDefaultTemplate() const {} +void DefaultDistro::deployTemplate() const {} Envirement DefaultDistro::toolKitLocation() const { return {}; diff --git a/Deploy/Distributions/defaultdistro.h b/Deploy/Distributions/defaultdistro.h index 3f9d795..fc05da3 100644 --- a/Deploy/Distributions/defaultdistro.h +++ b/Deploy/Distributions/defaultdistro.h @@ -11,7 +11,7 @@ public: // iDistribution interface public: QString getConfig() const; - void deployDefaultTemplate() const; + void deployTemplate() const; Envirement toolKitLocation() const; QString runCmd() const; QStringList runArg() const; diff --git a/Deploy/Distributions/idistribution.h b/Deploy/Distributions/idistribution.h index f73719a..f0a2799 100644 --- a/Deploy/Distributions/idistribution.h +++ b/Deploy/Distributions/idistribution.h @@ -11,7 +11,7 @@ public: virtual ~iDistribution(); virtual QString getConfig() const = 0; - virtual void deployDefaultTemplate() const = 0; + virtual void deployTemplate() const = 0; virtual Envirement toolKitLocation() const = 0; virtual QString runCmd() const = 0; virtual QStringList runArg() const = 0; diff --git a/Deploy/Distributions/qif.cpp b/Deploy/Distributions/qif.cpp index 11ecd01..23bff92 100644 --- a/Deploy/Distributions/qif.cpp +++ b/Deploy/Distributions/qif.cpp @@ -1,27 +1,40 @@ #include "qif.h" +#include "quasarapp.h" QIF::QIF(){} Envirement QIF::toolKitLocation() const { +// SNAP + Envirement result; + QString AppPath = QuasarAppUtils::Params::getStrArg("appPath", ""); + result.addEnv(AppPath); + +//Installer + result.addEnvRec(AppPath + "../../QIF/", 2); + + return result; } QString QIF::getConfig() const { - + return ":/Distro/Distributions/configures/QIF.json"; } QString QIF::runCmd() const { return "binarycreator"; } -void QIF::deployDefaultTemplate() const { +void QIF::deployTemplate() const { + auto customTemplate = QuasarAppUtils::Params::getStrArg("qif", ""); + if (customTemplate.size()) { + + } else { + + } } QStringList QIF::runArg() const { return {}; } -QString QIF::findBinaryCreator() { - -} diff --git a/Deploy/Distributions/qif.h b/Deploy/Distributions/qif.h index b7effc5..9625f69 100644 --- a/Deploy/Distributions/qif.h +++ b/Deploy/Distributions/qif.h @@ -14,11 +14,9 @@ public: Envirement toolKitLocation() const; QString getConfig() const; QString runCmd() const; - void deployDefaultTemplate() const; + void deployTemplate() const; QStringList runArg() const; -private: - QString findBinaryCreator(); }; #endif // QIF_H diff --git a/Deploy/configparser.cpp b/Deploy/configparser.cpp index a958288..66a4431 100644 --- a/Deploy/configparser.cpp +++ b/Deploy/configparser.cpp @@ -648,8 +648,8 @@ void ConfigParser::initIgnoreList() if (!QuasarAppUtils::Params::isEndable("deploySystem-with-libc")) { - envUnix.addEnv(recursiveInvairement("/lib", 3), "", ""); - envUnix.addEnv(recursiveInvairement("/usr/lib", 3), "", ""); + envUnix.addEnv(Envirement::recursiveInvairement("/lib", 3), "", ""); + envUnix.addEnv(Envirement::recursiveInvairement("/usr/lib", 3), "", ""); ruleUnix.prority = SystemLib; ruleUnix.platform = Unix; ruleUnix.enfirement = envUnix; @@ -683,8 +683,8 @@ void ConfigParser::initIgnoreList() auto path = env.value("PATH"); auto winPath = findWindowsPath(path); - envWin.addEnv(recursiveInvairement(winPath + "/System32", 2), "", ""); - envWin.addEnv(recursiveInvairement(winPath + "/SysWOW64", 2), "", ""); + envWin.addEnv(Envirement::recursiveInvairement(winPath + "/System32", 2), "", ""); + envWin.addEnv(Envirement::recursiveInvairement(winPath + "/SysWOW64", 2), "", ""); ruleWin.prority = SystemLib; ruleWin.platform = Win; @@ -941,7 +941,9 @@ void ConfigParser::setExtraPath(const QStringList &value) { auto extraDirs = getSetDirsRecursive(QDir::fromNativeSeparators(info.absoluteFilePath()), _config.depchLimit); _config.extraPaths.addExtraPaths(extraDirs); - _config.envirement.addEnv(recursiveInvairement(dir), _config.appDir, _config.getTargetDir()); + _config.envirement.addEnv(Envirement::recursiveInvairement(dir, 0, _config.depchLimit), + _config.appDir, + _config.getTargetDir()); } else if (i.size() > 1) { _config.extraPaths.addExtraPathsMasks({i}); @@ -979,46 +981,6 @@ void ConfigParser::setExtraPlugins(const QStringList &value) { } } -QString ConfigParser::recursiveInvairement(QDir &dir, int depch, int depchLimit ) { - - char separator = ':'; - -#ifdef Q_OS_WIN - separator = ';'; -#endif - - if (depchLimit < 0) { - depchLimit = _config.depchLimit; - } - - if (!dir.exists() || depch >= depchLimit) { - return dir.absolutePath(); - } - - QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); - QString res = ""; - - for (QFileInfo &i : list) { - if (!dir.cd(i.fileName())) { - continue; - } - QString temp = recursiveInvairement(dir, depch + 1); - res += (res.size())? separator + temp: temp; - - dir.cdUp(); - } - - res += (res.size())? separator + dir.absolutePath(): dir.absolutePath(); - - return res; -} - -QString ConfigParser::recursiveInvairement(const QString &dir, int depch) { - QDir _dir(dir); - - return recursiveInvairement(_dir, 0, depch); -} - QString ConfigParser::findWindowsPath(const QString& path) const { auto list = path.split(';'); QString win_magic = "windows"; @@ -1046,7 +1008,7 @@ bool ConfigParser::configureDistribution(iDistribution *distro) { return false; } - distro->deployDefaultTemplate(); + distro->deployTemplate(); _packing->setDistribution(distro); diff --git a/Deploy/configparser.h b/Deploy/configparser.h index 3c260a9..b757d7f 100644 --- a/Deploy/configparser.h +++ b/Deploy/configparser.h @@ -70,9 +70,6 @@ private: void setExtraPlugins(const QStringList &value); - QString recursiveInvairement(QDir &dir, int depch = 0, int depchLimit = -1); - QString recursiveInvairement(const QString &dir, int depch); - void initEnvirement(); QStringList getDirsRecursive(const QString &path, int maxDepch = -1, int depch = 0); diff --git a/Deploy/envirement.cpp b/Deploy/envirement.cpp index 4df3e28..f3fc1ed 100644 --- a/Deploy/envirement.cpp +++ b/Deploy/envirement.cpp @@ -20,21 +20,22 @@ QSet Envirement::upper(const QSet& set) const { return res; } -QStringList Envirement::deployEnvironment() const -{ +QStringList Envirement::deployEnvironment() const { return _deployEnvironment.toList(); } -QStringList Envirement::ignoreEnvList() const -{ +QStringList Envirement::ignoreEnvList() const { return _ignoreEnvList.toList(); } -void Envirement::setIgnoreEnvList(const QStringList &ignoreEnvList) -{ +void Envirement::setIgnoreEnvList(const QStringList &ignoreEnvList) { _ignoreEnvList = upper(ignoreEnvList.toSet()); } +void Envirement::addEnvRec(const QString &dir, int depch, const QString &appDir, const QString &targetDir) { + addEnv(Envirement::recursiveInvairement(dir, depch), appDir, targetDir); +} + void Envirement::addEnv(const QString &dir, const QString &appDir, const QString& targetDir) { char separator = ':'; @@ -116,6 +117,42 @@ QString Envirement::concatEnv() const { return result; } +QString Envirement::recursiveInvairement(QDir &dir, int depch, int depchLimit) { + + char separator = ':'; + +#ifdef Q_OS_WIN + separator = ';'; +#endif + + if (!dir.exists() || (depchLimit >= 0 && depch >= depchLimit)) { + return dir.absolutePath(); + } + + QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + QString res = ""; + + for (QFileInfo &i : list) { + if (!dir.cd(i.fileName())) { + continue; + } + QString temp = Envirement::recursiveInvairement(dir, depch + 1, depchLimit); + res += (res.size())? separator + temp: temp; + + dir.cdUp(); + } + + res += (res.size())? separator + dir.absolutePath(): dir.absolutePath(); + + return res; +} + +QString Envirement::recursiveInvairement(const QString &dir, int depch) { + QDir _dir(dir); + + return recursiveInvairement(_dir, 0, depch); +} + Envirement::Envirement() { diff --git a/Deploy/envirement.h b/Deploy/envirement.h index 2516727..8c11355 100644 --- a/Deploy/envirement.h +++ b/Deploy/envirement.h @@ -12,6 +12,8 @@ #include #include "deploy_global.h" +class QDir; + class DEPLOYSHARED_EXPORT Envirement { private: @@ -25,12 +27,17 @@ public: QStringList ignoreEnvList() const; void setIgnoreEnvList(const QStringList &ignoreEnvList); + void addEnvRec(const QString &dir, int depch, const QString &appDir = "", const QString &targetDir = ""); + void addEnv(const QString &dir, const QString &appDir = "", const QString &targetDir = ""); // return true if file exits in this envirement bool inThisEnvirement(const QString &file) const; int size() const; QString concatEnv() const; + + static QString recursiveInvairement(QDir &dir, int depch, int depchLimit = -1); + static QString recursiveInvairement(const QString &dir, int depch = -1); }; #endif // ENVIREMENT_H diff --git a/Deploy/packing.cpp b/Deploy/packing.cpp index 7679a51..e635558 100644 --- a/Deploy/packing.cpp +++ b/Deploy/packing.cpp @@ -10,7 +10,7 @@ Packing::Packing() { connect(_proc, &QProcess::readyReadStandardError, this, &Packing::handleOutputUpdate, Qt::QueuedConnection); - connect(_proc, &QProcess::readAllStandardOutput, + connect(_proc, &QProcess::readyReadStandardOutput, this, &Packing::handleOutputUpdate, Qt::QueuedConnection); moveToThread( new QThread(this)); @@ -55,8 +55,8 @@ bool Packing::create() { } void Packing::handleOutputUpdate() { - auto stdout = _proc->readAllStandardOutput(); - auto errout = _proc->readAllStandardError(); + QString stdout = _proc->readAllStandardOutput(); + QString errout = _proc->readAllStandardError(); if (stdout.size()) qInfo() << stdout; diff --git a/Deploy/packing.h b/Deploy/packing.h index 69779b7..2c0b605 100644 --- a/Deploy/packing.h +++ b/Deploy/packing.h @@ -24,7 +24,7 @@ public: bool create(); private: iDistribution *_pakage = nullptr; - QProcess *_proc; + QProcess *_proc = nullptr; private slots: void handleOutputUpdate();