summaryrefslogtreecommitdiff
path: root/src/commandline.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-11-07 17:21:13 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-11-07 20:16:27 -0500
commitba7d24faef49858b9721c2ade0f3ea4a7ba4d96d (patch)
tree3eca105cdc03aee82eed15777f36504d32e106ea /src/commandline.cpp
parent1bf24c7daad1eb954dc160784802de58f9809fa1 (diff)
moved handleCommandLine() to CommandLine::setupCore()
Diffstat (limited to 'src/commandline.cpp')
-rw-r--r--src/commandline.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/commandline.cpp b/src/commandline.cpp
index dc8cf53f..3d0e901d 100644
--- a/src/commandline.cpp
+++ b/src/commandline.cpp
@@ -1,10 +1,15 @@
#include "commandline.h"
#include "env.h"
+#include "organizercore.h"
#include "shared/util.h"
+#include <log.h>
+#include <report.h>
namespace cl
{
+using namespace MOBase;
+
std::string pad_right(std::string s, std::size_t n, char c=' ')
{
if (s.size() < n)
@@ -195,6 +200,54 @@ std::optional<int> CommandLine::run(const std::wstring& line)
}
}
+std::optional<int> CommandLine::setupCore(OrganizerCore& organizer) const
+{
+ // if we have a command line parameter, it is either a nxm link or
+ // a binary to start
+ if (m_shortcut.isValid()) {
+ if (m_shortcut.hasExecutable()) {
+ try {
+ organizer.processRunner()
+ .setFromShortcut(m_shortcut)
+ .setWaitForCompletion()
+ .run();
+
+ return 0;
+ }
+ catch (const std::exception &e) {
+ reportError(
+ QObject::tr("failed to start shortcut: %1").arg(e.what()));
+ return 1;
+ }
+ }
+ } else if (m_nxmLink) {
+ log::debug("starting download from command line: {}", *m_nxmLink);
+ organizer.externalMessage(*m_nxmLink);
+ } else if (m_executable) {
+ const QString exeName = *m_executable;
+ log::debug("starting {} from command line", exeName);
+
+ try
+ {
+ // pass the remaining parameters to the binary
+ organizer.processRunner()
+ .setFromFileOrExecutable(exeName, m_untouched)
+ .setWaitForCompletion()
+ .run();
+
+ return 0;
+ }
+ catch (const std::exception &e)
+ {
+ reportError(
+ QObject::tr("failed to start application: %1").arg(e.what()));
+ return 1;
+ }
+ }
+
+ return {};
+}
+
void CommandLine::clear()
{
m_vm.clear();