diff --git a/CQtDeployer/main.cpp b/CQtDeployer/main.cpp index 1bf67aa..7329b95 100644 --- a/CQtDeployer/main.cpp +++ b/CQtDeployer/main.cpp @@ -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; } diff --git a/Deploy/dependenciesscanner.cpp b/Deploy/dependenciesscanner.cpp index 9b79c11..30551e1 100644 --- a/Deploy/dependenciesscanner.cpp +++ b/Deploy/dependenciesscanner.cpp @@ -34,11 +34,11 @@ PrivateScaner DependenciesScanner::getScaner(const QString &lib) const { return PrivateScaner::UNKNOWN; } -QMultiMap DependenciesScanner::getLibsFromEnvirement( +QMultiMap DependenciesScanner::getLibsFromEnvirement( const QString &libName) { auto values = _EnvLibs.values(libName.toUpper()); - QMultiMap res; + QMultiMap res; for (auto & lib : values) { LibInfo info; diff --git a/Deploy/dependenciesscanner.h b/Deploy/dependenciesscanner.h index ebd7f42..ea809fe 100644 --- a/Deploy/dependenciesscanner.h +++ b/Deploy/dependenciesscanner.h @@ -35,7 +35,7 @@ private: PrivateScaner getScaner(const QString& lib) const; - QMultiMap getLibsFromEnvirement(const QString& libName); + QMultiMap getLibsFromEnvirement(const QString& libName); bool fillLibInfo(LibInfo& info ,const QString& file); void recursiveDep(LibInfo& lib, QSet &res); diff --git a/Deploy/deploy.cpp b/Deploy/deploy.cpp index 680c0d8..ae75407 100644 --- a/Deploy/deploy.cpp +++ b/Deploy/deploy.cpp @@ -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(); } diff --git a/Deploy/deployutils.cpp b/Deploy/deployutils.cpp index 711de64..df256f6 100644 --- a/Deploy/deployutils.cpp +++ b/Deploy/deployutils.cpp @@ -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 res; const size_t qtModulesCount = sizeof(qtModuleEntries) / sizeof(QtModuleEntry); diff --git a/Deploy/deployutils.h b/Deploy/deployutils.h index 59d5592..5164220 100644 --- a/Deploy/deployutils.h +++ b/Deploy/deployutils.h @@ -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); diff --git a/Deploy/libinfo.cpp b/Deploy/libinfo.cpp index c2e4ac6..7df895d 100644 --- a/Deploy/libinfo.cpp +++ b/Deploy/libinfo.cpp @@ -64,11 +64,11 @@ void LibInfo::setDependncies(const QSet &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; } diff --git a/Deploy/libinfo.h b/Deploy/libinfo.h index e71d134..3e1dd54 100644 --- a/Deploy/libinfo.h +++ b/Deploy/libinfo.h @@ -11,7 +11,7 @@ private: QString name; QString path; QSet 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);