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";
}
void DefaultDistro::deployDefaultTemplate() const {}
void DefaultDistro::deployTemplate() const {}
Envirement DefaultDistro::toolKitLocation() const {
return {};

View File

@ -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;

View File

@ -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;

View File

@ -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() {
}

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -20,21 +20,22 @@ QSet<QString> Envirement::upper(const QSet<QString>& 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()
{

View File

@ -12,6 +12,8 @@
#include <QStringList>
#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

View File

@ -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;

View File

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