aboutsummaryrefslogtreecommitdiff
path: root/launcher/launch
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-07-23 17:51:58 +0200
committerSefa Eyeoglu <contact@scrumplex.net>2022-07-23 17:51:58 +0200
commitba7dfb360c53b717b76ba7197ae40d2f9f59a659 (patch)
treecb1546e057086dd93f063518c3d644fcd8d60955 /launcher/launch
parent6aad750fe037cfdc46db846e6cc507f112f745ed (diff)
downloadPrismLauncher-ba7dfb360c53b717b76ba7197ae40d2f9f59a659.tar.gz
PrismLauncher-ba7dfb360c53b717b76ba7197ae40d2f9f59a659.tar.bz2
PrismLauncher-ba7dfb360c53b717b76ba7197ae40d2f9f59a659.zip
fix: actually substitute variables in pre/post launch
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Diffstat (limited to 'launcher/launch')
-rw-r--r--launcher/launch/LaunchTask.cpp33
-rw-r--r--launcher/launch/LaunchTask.h4
-rw-r--r--launcher/launch/steps/PostLaunchCommand.cpp7
-rw-r--r--launcher/launch/steps/PreLaunchCommand.cpp7
4 files changed, 20 insertions, 31 deletions
diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp
index 3aa95052..28fcc4f4 100644
--- a/launcher/launch/LaunchTask.cpp
+++ b/launcher/launch/LaunchTask.cpp
@@ -282,35 +282,22 @@ void LaunchTask::emitFailed(QString reason)
Task::emitFailed(reason);
}
-void LaunchTask::substituteVariables(const QStringList &args) const
+void LaunchTask::substituteVariables(QStringList &args) const
{
- auto variables = m_instance->getVariables();
- auto envVariables = QProcessEnvironment::systemEnvironment();
+ auto env = m_instance->createEnvironment();
- for (auto arg : args) {
- for (auto key : variables)
- {
- arg.replace("$" + key, variables.value(key));
- }
- for (auto env : envVariables.keys())
- {
- arg.replace("$" + env, envVariables.value(env));
- }
+ for (auto key : env.keys())
+ {
+ args.replaceInStrings("$" + key, env.value(key));
}
}
-QString LaunchTask::substituteVariables(const QString &cmd) const
+void LaunchTask::substituteVariables(QString &cmd) const
{
- QString out = cmd;
- auto variables = m_instance->getVariables();
- for (auto it = variables.begin(); it != variables.end(); ++it)
- {
- out.replace("$" + it.key(), it.value());
- }
- auto env = QProcessEnvironment::systemEnvironment();
- for (auto var : env.keys())
+ auto env = m_instance->createEnvironment();
+
+ for (auto key : env.keys())
{
- out.replace("$" + var, env.value(var));
+ cmd.replace("$" + key, env.value(key));
}
- return out;
}
diff --git a/launcher/launch/LaunchTask.h b/launcher/launch/LaunchTask.h
index 2efe1fa2..9c72b23f 100644
--- a/launcher/launch/LaunchTask.h
+++ b/launcher/launch/LaunchTask.h
@@ -105,8 +105,8 @@ public: /* methods */
shared_qobject_ptr<LogModel> getLogModel();
public:
- void substituteVariables(const QStringList &args) const;
- QString substituteVariables(const QString &cmd) const;
+ void substituteVariables(QStringList &args) const;
+ void substituteVariables(QString &cmd) const;
QString censorPrivateInfo(QString in);
protected: /* methods */
diff --git a/launcher/launch/steps/PostLaunchCommand.cpp b/launcher/launch/steps/PostLaunchCommand.cpp
index cf765bc0..ccf07f22 100644
--- a/launcher/launch/steps/PostLaunchCommand.cpp
+++ b/launcher/launch/steps/PostLaunchCommand.cpp
@@ -56,9 +56,10 @@ void PostLaunchCommand::executeTask()
const QString program = args.takeFirst();
m_process.start(program, args);
#else
- QString postlaunch_cmd = m_parent->substituteVariables(m_command);
- emit logLine(tr("Running Post-Launch command: %1").arg(postlaunch_cmd), MessageLevel::Launcher);
- m_process.start(postlaunch_cmd);
+ m_parent->substituteVariables(m_command);
+
+ emit logLine(tr("Running Post-Launch command: %1").arg(m_command), MessageLevel::Launcher);
+ m_process.start(m_command);
#endif
}
diff --git a/launcher/launch/steps/PreLaunchCommand.cpp b/launcher/launch/steps/PreLaunchCommand.cpp
index bf7d27eb..0b0392cb 100644
--- a/launcher/launch/steps/PreLaunchCommand.cpp
+++ b/launcher/launch/steps/PreLaunchCommand.cpp
@@ -56,9 +56,10 @@ void PreLaunchCommand::executeTask()
const QString program = args.takeFirst();
m_process.start(program, args);
#else
- QString prelaunch_cmd = m_parent->substituteVariables(m_command);
- emit logLine(tr("Running Pre-Launch command: %1").arg(prelaunch_cmd), MessageLevel::Launcher);
- m_process.start(prelaunch_cmd);
+ m_parent->substituteVariables(m_command);
+
+ emit logLine(tr("Running Pre-Launch command: %1").arg(m_command), MessageLevel::Launcher);
+ m_process.start(m_command);
#endif
}