aboutsummaryrefslogtreecommitdiff
path: root/libs/lootcli/src/main.cpp
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-12 03:00:11 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-12 03:00:11 -0500
commitb54e479a3f9e973a083c643905f21c59fadd63bb (patch)
treeff920cc2614c5d014e7de910cbad75875257776e /libs/lootcli/src/main.cpp
parentbf7a57fc55493247a624ecfd65e4d73964e7d8d2 (diff)
Remove LOOT integration entirely
The sort button was already hidden on Linux (setVisible(false)) and the LOOT feedback path (LootDialog -> addLootReport) has always been Windows-only, meaning the dirty/incompatibilities/missingMasters/messages tooltip bullets and the dirty-plugin icon could never fire on Linux. MO2 shipped lootcli + libloot for a load-order sort mechanism that was unreachable from the UI. Users who want LOOT can download it from https://github.com/loot/loot and run it against their instance directly. - Drop libs/lootcli/, libloot Dockerfile build step, and lootcli staging/patchelf in build-inner.sh - Drop src/src/loot.{cpp,h}, src/src/lootdialog.{cpp,h,ui} - Extract MarkdownDocument / MarkdownPage (used by UpdateDialog for its changelog view) into src/src/markdowndocument.{h,cpp} - Strip addLootReport, makeLootTooltip, Loot::Plugin field, LOOT icon checks, and LOOT tooltip/isProblematic/hasInfo paths from pluginlist - Delete sortButton widget, updateSortButton(), onSortButtonClicked(), and all m_didUpdateMasterList wiring - Delete lootLogLevel setting, combo box, and "Integrated LOOT" group from the diagnostics settings tab
Diffstat (limited to 'libs/lootcli/src/main.cpp')
-rw-r--r--libs/lootcli/src/main.cpp102
1 files changed, 0 insertions, 102 deletions
diff --git a/libs/lootcli/src/main.cpp b/libs/lootcli/src/main.cpp
deleted file mode 100644
index d06e0ef..0000000
--- a/libs/lootcli/src/main.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-#include "lootthread.h"
-#include <lootcli/lootcli.h>
-
-using namespace std;
-
-template <typename T>
-T getParameter(const std::vector<std::string>& arguments, const std::string& key)
-{
- auto iter = std::find(arguments.begin(), arguments.end(), std::string("--") + key);
- if ((iter != arguments.end()) && ((iter + 1) != arguments.end())) {
- return boost::lexical_cast<T>(*(iter + 1));
- } else {
- throw std::runtime_error(std::string("argument missing " + key));
- }
-}
-
-template <>
-bool getParameter<bool>(const std::vector<std::string>& arguments,
- const std::string& key)
-{
- auto iter = std::find(arguments.begin(), arguments.end(), std::string("--") + key);
- if (iter != arguments.end()) {
- return true;
- } else {
- return false;
- }
-}
-
-template <typename T>
-T getOptionalParameter(const std::vector<std::string>& arguments,
- const std::string& key, T def)
-{
- try {
- return getParameter<T>(arguments, key);
- } catch (std::runtime_error&) {
- return def;
- }
-}
-
-loot::LogLevel getLogLevel(const std::vector<std::string>& arguments)
-{
- const auto s = getOptionalParameter<std::string>(arguments, "logLevel", "");
- const auto level = lootcli::logLevelFromString(s);
-
- return lootcli::toLootLogLevel(level);
-}
-
-#ifdef _WIN32
-int wWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
-{
- _setmode(_fileno(stdout), _O_BINARY);
- setlocale(LC_ALL, "en.UTF-8");
-
- std::vector<std::string> arguments;
- int argc;
- LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
-
- if (argv) {
- for (int i = 0; i < argc; ++i) {
- size_t num_converted;
- std::vector<char> arg(wcslen(argv[i]) * sizeof(wchar_t) + 1);
-
- wcstombs_s(&num_converted, &(arg[0]), arg.size(), argv[i], arg.size() - 1);
-
- arguments.push_back(&(arg[0]));
- }
- }
-#else
-int main(int argc, char* argv[])
-{
- setlocale(LC_ALL, "en_US.UTF-8");
-
- std::vector<std::string> arguments;
- for (int i = 0; i < argc; ++i) {
- arguments.push_back(argv[i]);
- }
-#endif
-
- // design rationale: this was designed to have the actual loot stuff run in a separate
- // thread. That turned out to be unnecessary atm.
-
- try {
- lootcli::LOOTWorker worker;
-
- worker.setUpdateMasterlist(!getParameter<bool>(arguments, "skipUpdateMasterlist"));
- worker.setGame(getParameter<std::string>(arguments, "game"));
- worker.setGamePath(getParameter<std::string>(arguments, "gamePath"));
- worker.setPluginListPath(getParameter<std::string>(arguments, "pluginListPath"));
- worker.setOutput(getParameter<std::string>(arguments, "out"));
- worker.setLogLevel(getLogLevel(arguments));
-
- const auto lang = getOptionalParameter<std::string>(arguments, "language", "");
- if (!lang.empty()) {
- worker.setLanguageCode(lang);
- }
-
- return worker.run();
- } catch (const std::exception& e) {
- std::cerr << "Error: " << e.what();
- return 1;
- }
-}