2019-09-23 16:46:57 +03:00
|
|
|
//#
|
2019-12-08 13:57:20 +03:00
|
|
|
//# Copyright (C) 2018-2020 QuasarApp.
|
2019-09-23 16:46:57 +03:00
|
|
|
//# Distributed under the lgplv3 software license, see the accompanying
|
|
|
|
//# Everyone is permitted to copy and distribute verbatim copies
|
|
|
|
//# of this license document, but changing it is not allowed.
|
|
|
|
//#
|
|
|
|
|
2020-01-16 11:10:16 +03:00
|
|
|
#include "deploycore.h"
|
2019-09-07 12:01:20 +03:00
|
|
|
#include "envirement.h"
|
2019-12-20 17:25:20 +03:00
|
|
|
#include "pathutils.h"
|
2019-09-07 12:36:20 +03:00
|
|
|
#include "quasarapp.h"
|
|
|
|
|
|
|
|
#include <QDir>
|
|
|
|
#include <QFileInfo>
|
2019-09-07 12:01:20 +03:00
|
|
|
|
2019-12-20 17:25:20 +03:00
|
|
|
QSet<QString> Envirement::upper(const QSet<QString>& set) const {
|
|
|
|
QSet<QString> res;
|
2020-01-12 16:43:03 +03:00
|
|
|
for (const auto &i : set) {
|
2019-12-20 17:25:20 +03:00
|
|
|
res.insert(PathUtils::fixPath(i));
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
2020-01-05 14:55:57 +03:00
|
|
|
QStringList Envirement::deployEnvironment() const {
|
2020-02-20 10:35:00 +03:00
|
|
|
return _deployEnvironment.values();
|
2019-09-07 12:01:20 +03:00
|
|
|
}
|
|
|
|
|
2020-01-05 14:55:57 +03:00
|
|
|
QStringList Envirement::ignoreEnvList() const {
|
2020-02-20 10:35:00 +03:00
|
|
|
return _ignoreEnvList.values();
|
2019-09-07 12:01:20 +03:00
|
|
|
}
|
|
|
|
|
2020-01-05 14:55:57 +03:00
|
|
|
void Envirement::setIgnoreEnvList(const QStringList &ignoreEnvList) {
|
2020-02-20 10:35:00 +03:00
|
|
|
_ignoreEnvList = upper(QSet<QString>(ignoreEnvList.begin(), ignoreEnvList.end()));
|
2019-09-07 12:01:20 +03:00
|
|
|
}
|
|
|
|
|
2020-01-05 14:55:57 +03:00
|
|
|
void Envirement::addEnvRec(const QString &dir, int depch, const QString &appDir, const QString &targetDir) {
|
|
|
|
addEnv(Envirement::recursiveInvairement(dir, depch), appDir, targetDir);
|
|
|
|
}
|
|
|
|
|
2019-09-07 12:36:20 +03:00
|
|
|
void Envirement::addEnv(const QString &dir, const QString &appDir, const QString& targetDir) {
|
|
|
|
|
|
|
|
char separator = ':';
|
|
|
|
|
|
|
|
#ifdef Q_OS_WIN
|
|
|
|
separator = ';';
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (dir.contains(separator)) {
|
|
|
|
auto list = dir.split(separator);
|
|
|
|
for (auto i : list) {
|
|
|
|
addEnv(i, appDir, targetDir);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
auto path = QFileInfo(dir).absoluteFilePath();
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
for (QString i :_ignoreEnvList) {
|
2020-02-24 10:34:08 +03:00
|
|
|
i = PathUtils::stripPath(i);
|
2019-12-20 17:25:20 +03:00
|
|
|
if (path.contains(i, ONLY_WIN_CASE_INSENSIATIVE)) {
|
2019-09-07 12:36:20 +03:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-23 10:06:22 +03:00
|
|
|
if (!appDir.isEmpty() && path.contains(appDir)) {
|
2019-09-07 12:36:20 +03:00
|
|
|
QuasarAppUtils::Params::verboseLog("is cqtdeployer dir!: " + path + " app dir : " + appDir);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!QFileInfo(path).isDir()) {
|
|
|
|
QuasarAppUtils::Params::verboseLog("is not dir!! :" + path);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_deployEnvironment.contains(path)) {
|
|
|
|
QuasarAppUtils::Params::verboseLog ("Environment alredy added: " + path);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-09-23 10:06:22 +03:00
|
|
|
if (!targetDir.isEmpty() && path.contains(targetDir)) {
|
2019-09-07 12:36:20 +03:00
|
|
|
QuasarAppUtils::Params::verboseLog ("Skip paths becouse it is target : " + path);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-12-20 17:25:20 +03:00
|
|
|
_deployEnvironment.insert(PathUtils::fixPath(QDir::fromNativeSeparators(path)));
|
2019-12-19 19:15:38 +03:00
|
|
|
|
2019-09-07 12:36:20 +03:00
|
|
|
}
|
|
|
|
|
2019-09-22 21:55:04 +03:00
|
|
|
bool Envirement::inThisEnvirement(const QString &file) const {
|
2019-09-23 10:06:22 +03:00
|
|
|
QFileInfo info (file);
|
2019-12-19 19:15:38 +03:00
|
|
|
|
2019-09-23 10:06:22 +03:00
|
|
|
if (info.isFile()) {
|
2019-12-20 17:25:20 +03:00
|
|
|
return _deployEnvironment.contains(PathUtils::fixPath(info.absolutePath()));
|
2019-09-23 10:06:22 +03:00
|
|
|
}
|
|
|
|
|
2019-12-20 17:25:20 +03:00
|
|
|
return _deployEnvironment.contains(PathUtils::fixPath(file));
|
2019-09-23 10:06:22 +03:00
|
|
|
|
2019-09-22 21:55:04 +03:00
|
|
|
}
|
|
|
|
|
2019-09-07 12:36:20 +03:00
|
|
|
int Envirement::size() const {
|
|
|
|
return _deployEnvironment.size();
|
|
|
|
}
|
|
|
|
|
2019-09-08 13:37:33 +03:00
|
|
|
QString Envirement::concatEnv() const {
|
|
|
|
|
|
|
|
if (_deployEnvironment.isEmpty()) {
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QString result = *_deployEnvironment.begin();
|
2019-09-08 13:37:33 +03:00
|
|
|
for (auto i: _deployEnvironment) {
|
2020-01-16 11:10:16 +03:00
|
|
|
result += (DeployCore::getEnvSeparator() + i);
|
2019-09-08 13:37:33 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2020-01-05 14:55:57 +03:00
|
|
|
QString Envirement::recursiveInvairement(QDir &dir, int depch, int depchLimit) {
|
|
|
|
|
2020-01-16 11:10:16 +03:00
|
|
|
char separator = DeployCore::getEnvSeparator();
|
2020-01-05 14:55:57 +03:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2019-09-07 12:01:20 +03:00
|
|
|
Envirement::Envirement()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|