4
1
mirror of https://github.com/QuasarApp/CQtDeployer.git synced 2025-05-02 12:39:35 +00:00

added modes

This commit is contained in:
Andrei Yankovich 2019-08-24 17:56:42 +03:00
parent 099784b57a
commit a90b9a10ca
8 changed files with 123 additions and 42 deletions

@ -28,30 +28,12 @@ int main(int argc, const char *argv[]) {
};
QuasarAppUtils::Params::setEnable("noWriteInFileLog", true);
if ((QuasarAppUtils::Params::isEndable("v") ||
QuasarAppUtils::Params::isEndable("version"))) {
DeployUtils::printVersion();
exit(0);
}
if (QuasarAppUtils::Params::isEndable("h") ||
QuasarAppUtils::Params::isEndable("help")) {
DeployUtils::help();
exit(0);
}
Deploy deploy;
if (!DeployUtils::parseQt(&deploy)) {
qCritical() << "error parse imput data";
DeployUtils::help();
exit(1);
}
deploy.deploy();
qInfo() << "deploy done!";
return 0;
}

@ -34,11 +34,11 @@ PrivateScaner DependenciesScanner::getScaner(const QString &lib) const {
return PrivateScaner::UNKNOWN;
}
QMultiMap<libPriority, LibInfo> DependenciesScanner::getLibsFromEnvirement(
QMultiMap<LibPriority, LibInfo> DependenciesScanner::getLibsFromEnvirement(
const QString &libName) {
auto values = _EnvLibs.values(libName.toUpper());
QMultiMap<libPriority, LibInfo> res;
QMultiMap<LibPriority, LibInfo> res;
for (auto & lib : values) {
LibInfo info;

@ -35,7 +35,7 @@ private:
PrivateScaner getScaner(const QString& lib) const;
QMultiMap<libPriority, LibInfo> getLibsFromEnvirement(const QString& libName);
QMultiMap<LibPriority, LibInfo> getLibsFromEnvirement(const QString& libName);
bool fillLibInfo(LibInfo& info ,const QString& file);
void recursiveDep(LibInfo& lib, QSet<LibInfo> &res);

@ -781,13 +781,13 @@ void Deploy::extractLib(const QString &file, bool isExtractPlugins) {
continue;
}
if (line.getPriority() != libPriority::SystemLib && !neadedLibs.contains(line.fullPath())) {
if (line.getPriority() != LibPriority::SystemLib && !neadedLibs.contains(line.fullPath())) {
neadedLibs << line.fullPath();
if (isExtractPlugins) {
extractPlugins(line.fullPath());
}
} else if (QuasarAppUtils::Params::isEndable("deploySystem") &&
line.getPriority() == libPriority::SystemLib &&
line.getPriority() == LibPriority::SystemLib &&
!systemLibs.contains(line.fullPath())) {
systemLibs << line.fullPath();
}

@ -73,7 +73,7 @@ QtModuleEntry DeployUtils::qtModuleEntries[] = {
{ QtWebViewModule, "webview", "Qt5WebView", nullptr }
};
libPriority DeployUtils::getLibPriority(const QString &lib) {
LibPriority DeployUtils::getLibPriority(const QString &lib) {
if (!QFileInfo(lib).isFile()) {
return NotFile;
@ -96,6 +96,23 @@ void DeployUtils::verboseLog(const QString &str) {
}
}
#define C(X) QuasarAppUtils::Params::isEndable(X)
RunMode DeployUtils::getMode() {
if (C("help") || C("h") || C("v") || C("version")) {
return RunMode::Info;
}
if (C("bin") || C("binDir")) {
return RunMode::Deploy;
}
if (C("clear") || C("force-clear")) {
return RunMode::Clear;
}
return RunMode::Info;
}
void DeployUtils::help() {
QStringList help = {
@ -145,23 +162,53 @@ void DeployUtils::help() {
}
bool DeployUtils::parseQt(Deploy *deploy) {
if (!(QuasarAppUtils::Params::isEndable("bin") ||
QuasarAppUtils::Params::isEndable("binDir"))) {
qWarning() << "you need to use -bin or -binDir flags";
return false;
}
bool DeployUtils::parseQtClearMode(Deploy *deploy) {
auto bin = QuasarAppUtils::Params::getStrArg("bin").split(',');
bin.removeAll("");
if (!deploy->setTargets(bin)) {
auto binDir = QuasarAppUtils::Params::getStrArg("binDir");
if (!(deploy->setTargetsRecursive(binDir) || deploy->setTargets({"./"}))) {
qCritical() << "setTargetDir fail!";
return false;
}
}
if (!deploy->setTargetsRecursive(binDir)) {
qCritical() << "error init targeet dir";
if (QuasarAppUtils::Params::isEndable("clear") ||
QuasarAppUtils::Params::isEndable("force-clear")) {
qInfo() << "clear old data";
deploy->clear(QuasarAppUtils::Params::isEndable("force-clear"));
}
return true;
}
bool DeployUtils::parseQtInfoMode() {
if ((QuasarAppUtils::Params::isEndable("v") ||
QuasarAppUtils::Params::isEndable("version"))) {
DeployUtils::printVersion();
return true;
}
if (QuasarAppUtils::Params::isEndable("h") ||
QuasarAppUtils::Params::isEndable("help")) {
DeployUtils::help();
return true;
}
return false;
}
bool DeployUtils::parseQtDeployMode(Deploy *deploy) {
auto bin = QuasarAppUtils::Params::getStrArg("bin").split(',');
if (!deploy->setTargets(bin)) {
auto binDir = QuasarAppUtils::Params::getStrArg("binDir");
if (!(deploy->setTargetsRecursive(binDir) || deploy->setTargets({"./"}))) {
qCritical() << "setTargetDir fail!";
return false;
}
}
@ -244,9 +291,51 @@ bool DeployUtils::parseQt(Deploy *deploy) {
deploy->setQtDir(dir.absolutePath());
deploy->deploy();
qInfo() << "deploy done!";
return true;
}
bool DeployUtils::parseQt(Deploy *deploy) {
switch (getMode()) {
case RunMode::Info: {
qInfo() << "selected info mode" ;
if (!parseQtInfoMode()) {
qCritical() << "info mode fail!";
return false;
}
return true;
}
case RunMode::Clear: {
qInfo() << "selected clear mode" ;
if (!parseQtClearMode(deploy)) {
qCritical() << "clear mode fail!";
return false;
}
return true;
}
case RunMode::Deploy: {
qInfo() << "selected deploy mode" ;
if (!parseQtDeployMode(deploy)) {
qCritical() << "deploy mode fail!";
return false;
}
return true;
}
}
return false;
}
QStringList DeployUtils::extractTranslation(const QStringList &libs) {
QSet<QString> res;
const size_t qtModulesCount = sizeof(qtModuleEntries) / sizeof(QtModuleEntry);

@ -38,13 +38,19 @@ enum Platform {
Unix64
};
enum libPriority : int {
enum LibPriority : int {
QtLib = 0x0,
ExtraLib,
SystemLib,
NotFile = 0xF,
};
enum class RunMode: int {
Info,
Deploy,
Clear
};
class Deploy;
class DEPLOYSHARED_EXPORT DeployUtils
@ -54,6 +60,9 @@ private:
static QString getMSVCName(MSVCVersion msvc);
static QString getMSVCVersion(MSVCVersion msvc);
static bool parseQtDeployMode(Deploy *deploy);
static bool parseQtInfoMode();
static bool parseQtClearMode(Deploy *deploy);
public:
enum QtModule : quint64
{
@ -122,8 +131,9 @@ public:
static bool isQtLib(const QString &lib);
static bool isExtraLib(const QString &lib);
static libPriority getLibPriority(const QString &lib);
static LibPriority getLibPriority(const QString &lib);
static void verboseLog(const QString &str);
static RunMode getMode();
static void help();
static bool parseQt(Deploy *deploy);
static QStringList extractTranslation(const QStringList& libs);

@ -64,11 +64,11 @@ void LibInfo::setDependncies(const QSet<QString> &value) {
dependncies = value;
}
libPriority LibInfo::getPriority() const {
LibPriority LibInfo::getPriority() const {
return priority;
}
void LibInfo::setPriority(const libPriority &value) {
void LibInfo::setPriority(const LibPriority &value) {
priority = value;
}

@ -11,7 +11,7 @@ private:
QString name;
QString path;
QSet<QString> dependncies;
libPriority priority = NotFile;
LibPriority priority = NotFile;
public:
@ -40,8 +40,8 @@ public:
void addDependncies(const QString &value);
void removeDependncies(const QString &value);
libPriority getPriority() const;
void setPriority(const libPriority &value);
LibPriority getPriority() const;
void setPriority(const LibPriority &value);
};
uint qHash(const LibInfo& info);