fix default implementatin and adde base implementation if qif

This commit is contained in:
Andrei Yankovich 2020-01-05 14:55:57 +03:00
parent b853101704
commit 5ddc930d5a
11 changed files with 84 additions and 70 deletions

View File

@ -11,7 +11,7 @@ QString DefaultDistro::getConfig() const{
return ":/Distro/Distributions/configures/C and C++.json"; return ":/Distro/Distributions/configures/C and C++.json";
} }
void DefaultDistro::deployDefaultTemplate() const {} void DefaultDistro::deployTemplate() const {}
Envirement DefaultDistro::toolKitLocation() const { Envirement DefaultDistro::toolKitLocation() const {
return {}; return {};

View File

@ -11,7 +11,7 @@ public:
// iDistribution interface // iDistribution interface
public: public:
QString getConfig() const; QString getConfig() const;
void deployDefaultTemplate() const; void deployTemplate() const;
Envirement toolKitLocation() const; Envirement toolKitLocation() const;
QString runCmd() const; QString runCmd() const;
QStringList runArg() const; QStringList runArg() const;

View File

@ -11,7 +11,7 @@ public:
virtual ~iDistribution(); virtual ~iDistribution();
virtual QString getConfig() const = 0; virtual QString getConfig() const = 0;
virtual void deployDefaultTemplate() const = 0; virtual void deployTemplate() const = 0;
virtual Envirement toolKitLocation() const = 0; virtual Envirement toolKitLocation() const = 0;
virtual QString runCmd() const = 0; virtual QString runCmd() const = 0;
virtual QStringList runArg() const = 0; virtual QStringList runArg() const = 0;

View File

@ -1,27 +1,40 @@
#include "qif.h" #include "qif.h"
#include "quasarapp.h"
QIF::QIF(){} QIF::QIF(){}
Envirement QIF::toolKitLocation() const { 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 { QString QIF::getConfig() const {
return ":/Distro/Distributions/configures/QIF.json";
} }
QString QIF::runCmd() const { QString QIF::runCmd() const {
return "binarycreator"; return "binarycreator";
} }
void QIF::deployDefaultTemplate() const { void QIF::deployTemplate() const {
auto customTemplate = QuasarAppUtils::Params::getStrArg("qif", "");
if (customTemplate.size()) {
} else {
}
} }
QStringList QIF::runArg() const { QStringList QIF::runArg() const {
return {}; return {};
} }
QString QIF::findBinaryCreator() {
}

View File

@ -14,11 +14,9 @@ public:
Envirement toolKitLocation() const; Envirement toolKitLocation() const;
QString getConfig() const; QString getConfig() const;
QString runCmd() const; QString runCmd() const;
void deployDefaultTemplate() const; void deployTemplate() const;
QStringList runArg() const; QStringList runArg() const;
private:
QString findBinaryCreator();
}; };
#endif // QIF_H #endif // QIF_H

View File

@ -648,8 +648,8 @@ void ConfigParser::initIgnoreList()
if (!QuasarAppUtils::Params::isEndable("deploySystem-with-libc")) { if (!QuasarAppUtils::Params::isEndable("deploySystem-with-libc")) {
envUnix.addEnv(recursiveInvairement("/lib", 3), "", ""); envUnix.addEnv(Envirement::recursiveInvairement("/lib", 3), "", "");
envUnix.addEnv(recursiveInvairement("/usr/lib", 3), "", ""); envUnix.addEnv(Envirement::recursiveInvairement("/usr/lib", 3), "", "");
ruleUnix.prority = SystemLib; ruleUnix.prority = SystemLib;
ruleUnix.platform = Unix; ruleUnix.platform = Unix;
ruleUnix.enfirement = envUnix; ruleUnix.enfirement = envUnix;
@ -683,8 +683,8 @@ void ConfigParser::initIgnoreList()
auto path = env.value("PATH"); auto path = env.value("PATH");
auto winPath = findWindowsPath(path); auto winPath = findWindowsPath(path);
envWin.addEnv(recursiveInvairement(winPath + "/System32", 2), "", ""); envWin.addEnv(Envirement::recursiveInvairement(winPath + "/System32", 2), "", "");
envWin.addEnv(recursiveInvairement(winPath + "/SysWOW64", 2), "", ""); envWin.addEnv(Envirement::recursiveInvairement(winPath + "/SysWOW64", 2), "", "");
ruleWin.prority = SystemLib; ruleWin.prority = SystemLib;
ruleWin.platform = Win; ruleWin.platform = Win;
@ -941,7 +941,9 @@ void ConfigParser::setExtraPath(const QStringList &value) {
auto extraDirs = getSetDirsRecursive(QDir::fromNativeSeparators(info.absoluteFilePath()), _config.depchLimit); auto extraDirs = getSetDirsRecursive(QDir::fromNativeSeparators(info.absoluteFilePath()), _config.depchLimit);
_config.extraPaths.addExtraPaths(extraDirs); _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) { } else if (i.size() > 1) {
_config.extraPaths.addExtraPathsMasks({i}); _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 { QString ConfigParser::findWindowsPath(const QString& path) const {
auto list = path.split(';'); auto list = path.split(';');
QString win_magic = "windows"; QString win_magic = "windows";
@ -1046,7 +1008,7 @@ bool ConfigParser::configureDistribution(iDistribution *distro) {
return false; return false;
} }
distro->deployDefaultTemplate(); distro->deployTemplate();
_packing->setDistribution(distro); _packing->setDistribution(distro);

View File

@ -70,9 +70,6 @@ private:
void setExtraPlugins(const QStringList &value); void setExtraPlugins(const QStringList &value);
QString recursiveInvairement(QDir &dir, int depch = 0, int depchLimit = -1);
QString recursiveInvairement(const QString &dir, int depch);
void initEnvirement(); void initEnvirement();
QStringList getDirsRecursive(const QString &path, int maxDepch = -1, int depch = 0); QStringList getDirsRecursive(const QString &path, int maxDepch = -1, int depch = 0);

View File

@ -20,21 +20,22 @@ QSet<QString> Envirement::upper(const QSet<QString>& set) const {
return res; return res;
} }
QStringList Envirement::deployEnvironment() const QStringList Envirement::deployEnvironment() const {
{
return _deployEnvironment.toList(); return _deployEnvironment.toList();
} }
QStringList Envirement::ignoreEnvList() const QStringList Envirement::ignoreEnvList() const {
{
return _ignoreEnvList.toList(); return _ignoreEnvList.toList();
} }
void Envirement::setIgnoreEnvList(const QStringList &ignoreEnvList) void Envirement::setIgnoreEnvList(const QStringList &ignoreEnvList) {
{
_ignoreEnvList = upper(ignoreEnvList.toSet()); _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) { void Envirement::addEnv(const QString &dir, const QString &appDir, const QString& targetDir) {
char separator = ':'; char separator = ':';
@ -116,6 +117,42 @@ QString Envirement::concatEnv() const {
return result; 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() Envirement::Envirement()
{ {

View File

@ -12,6 +12,8 @@
#include <QStringList> #include <QStringList>
#include "deploy_global.h" #include "deploy_global.h"
class QDir;
class DEPLOYSHARED_EXPORT Envirement class DEPLOYSHARED_EXPORT Envirement
{ {
private: private:
@ -25,12 +27,17 @@ public:
QStringList ignoreEnvList() const; QStringList ignoreEnvList() const;
void setIgnoreEnvList(const QStringList &ignoreEnvList); 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 = ""); void addEnv(const QString &dir, const QString &appDir = "", const QString &targetDir = "");
// return true if file exits in this envirement // return true if file exits in this envirement
bool inThisEnvirement(const QString &file) const; bool inThisEnvirement(const QString &file) const;
int size() const; int size() const;
QString concatEnv() 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 #endif // ENVIREMENT_H

View File

@ -10,7 +10,7 @@ Packing::Packing() {
connect(_proc, &QProcess::readyReadStandardError, connect(_proc, &QProcess::readyReadStandardError,
this, &Packing::handleOutputUpdate, Qt::QueuedConnection); this, &Packing::handleOutputUpdate, Qt::QueuedConnection);
connect(_proc, &QProcess::readAllStandardOutput, connect(_proc, &QProcess::readyReadStandardOutput,
this, &Packing::handleOutputUpdate, Qt::QueuedConnection); this, &Packing::handleOutputUpdate, Qt::QueuedConnection);
moveToThread( new QThread(this)); moveToThread( new QThread(this));
@ -55,8 +55,8 @@ bool Packing::create() {
} }
void Packing::handleOutputUpdate() { void Packing::handleOutputUpdate() {
auto stdout = _proc->readAllStandardOutput(); QString stdout = _proc->readAllStandardOutput();
auto errout = _proc->readAllStandardError(); QString errout = _proc->readAllStandardError();
if (stdout.size()) if (stdout.size())
qInfo() << stdout; qInfo() << stdout;

View File

@ -24,7 +24,7 @@ public:
bool create(); bool create();
private: private:
iDistribution *_pakage = nullptr; iDistribution *_pakage = nullptr;
QProcess *_proc; QProcess *_proc = nullptr;
private slots: private slots:
void handleOutputUpdate(); void handleOutputUpdate();