diff --git a/LocalModList.cpp b/LocalModList.cpp index 5e38d8a..782c843 100644 --- a/LocalModList.cpp +++ b/LocalModList.cpp @@ -224,6 +224,16 @@ LocalModDescription LocalModList::getModDescriptionByName(std::string name) { return emptylmd; } +LocalModDescription LocalModList::getModDescriptionByNameFrom(std::string name, std::string remoteModlist) { + for(unsigned int i = 0; i < _modlist.size(); i++) { + if(_modlist[i].getName() == name && _modlist[i].getRemoteModlistName() == remoteModlist) { + return _modlist[i]; + } + } + LocalModDescription emptylmd; + return emptylmd; +} + void LocalModList::resetModDescriptionIterator() { if(_modlistAtEnd) { _modlistAtEnd = false; diff --git a/LocalModList.h b/LocalModList.h index eba5a23..ba92cb2 100644 --- a/LocalModList.h +++ b/LocalModList.h @@ -34,6 +34,10 @@ public: LocalModDescription getModDescriptionByName(std::string name); ///< \brief A function, that searches a mod name and returns its description. ///< \param name A mod name. ///< \return Description of the mod. + LocalModDescription getModDescriptionByNameFrom(std::string name, std::string remoteModlist); ///< \brief A function, that searches a mod name in given remote modlist and returns its description. + ///< \param name A mod name. + ///< \param remoteModlist A name of remote modlist to search in. + ///< \return Description of the mod. void resetModDescriptionIterator(); ///< A function that resets iterator of the modlist. bool modDescriptionsAtEnd(); ///< \brief A function that returns if the modlist iterator has reached its end. ///< \return True if modlist iterator is at end, false otherwise. diff --git a/QueryAction.cpp b/QueryAction.cpp index 17031b4..e5b4ad7 100644 --- a/QueryAction.cpp +++ b/QueryAction.cpp @@ -89,7 +89,22 @@ void QueryAction::run() { } } else { for(unsigned int i = 0; i < parameters.size(); i++) { - mmm::LocalModDescription lmd = lml.getModDescriptionByName(parameters[i]); + mmm::LocalModDescription lmd; + std::string modname = ""; + std::string modlistname = ""; + for(unsigned int j = 0; j < parameters[i].length(); j++) { + if(parameters[i][j] == '/') { + modlistname = modname; + modname = ""; + } else { + modname += parameters[i][j]; + } + } + if(modlistname == "") { + lmd = lml.getModDescriptionByName(modname); + } else { + lmd = lml.getModDescriptionByNameFrom(modname, modlistname); + } if(lmd.getName() != "" && lmd.getReleaseNr() > 0 && lmd.getDescription() != "" && lmd.getRemoteModlistName() != "") { std::cout << lmd.getRemoteModlistName() << "/" << lmd.getName() << " (release: " << lmd.getReleaseNr() << ")"; if(repoinfook) { @@ -115,7 +130,11 @@ void QueryAction::run() { } } } else { - std::cout << parameters[i] << " not found!" << std::endl; + if(modlistname == "") { + std::cout << modname << " not found!" << std::endl; + } else { + std::cout << modname << " not found in " << modlistname << "!" << std::endl; + } } } } diff --git a/filetesters/configparser b/filetesters/configparser new file mode 100755 index 0000000..f8f960f Binary files /dev/null and b/filetesters/configparser differ diff --git a/filetesters/modinfoparser b/filetesters/modinfoparser new file mode 100755 index 0000000..d1cc855 Binary files /dev/null and b/filetesters/modinfoparser differ diff --git a/filetesters/modlistparser b/filetesters/modlistparser new file mode 100755 index 0000000..76dba76 Binary files /dev/null and b/filetesters/modlistparser differ diff --git a/tests/ConfigFileTest b/tests/ConfigFileTest new file mode 100755 index 0000000..5e87297 Binary files /dev/null and b/tests/ConfigFileTest differ diff --git a/tests/LocalModDescriptionTest b/tests/LocalModDescriptionTest new file mode 100755 index 0000000..43560d4 Binary files /dev/null and b/tests/LocalModDescriptionTest differ diff --git a/tests/LocalModListTest b/tests/LocalModListTest new file mode 100755 index 0000000..323c76a Binary files /dev/null and b/tests/LocalModListTest differ diff --git a/tests/LocalQueryActionTest b/tests/LocalQueryActionTest new file mode 100755 index 0000000..526b440 Binary files /dev/null and b/tests/LocalQueryActionTest differ diff --git a/tests/ModDescriptionTest b/tests/ModDescriptionTest new file mode 100755 index 0000000..a02c390 Binary files /dev/null and b/tests/ModDescriptionTest differ diff --git a/tests/ModInfoTest b/tests/ModInfoTest new file mode 100755 index 0000000..6d5f1e9 Binary files /dev/null and b/tests/ModInfoTest differ diff --git a/tests/ModListListTest b/tests/ModListListTest new file mode 100755 index 0000000..f9cf1e5 Binary files /dev/null and b/tests/ModListListTest differ diff --git a/tests/ModListTest b/tests/ModListTest new file mode 100755 index 0000000..1b795d8 Binary files /dev/null and b/tests/ModListTest differ diff --git a/tests/QueryActionTest b/tests/QueryActionTest new file mode 100755 index 0000000..ec9092e Binary files /dev/null and b/tests/QueryActionTest differ diff --git a/tests/RepositoryInfoTest b/tests/RepositoryInfoTest new file mode 100755 index 0000000..ec72f0f Binary files /dev/null and b/tests/RepositoryInfoTest differ diff --git a/tests/SyncActionTest b/tests/SyncActionTest new file mode 100755 index 0000000..627e3a9 Binary files /dev/null and b/tests/SyncActionTest differ