Utils: Drop OsType parameter from CommandLine functions

The type is implicitly given by the command's executble FilePath.

Also, rename the rarely used addArgs(const CommandLine &) overload
to addCommandLineAsArgs() and make it strip scheme and host from
the wrapped executable as there are no uses expected where keeping
them would be the right thing.

Change-Id: Id0b76778e7e01ac16e477f36bf30bb28d96bb177
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2021-08-12 13:04:22 +02:00
parent d735d3238f
commit 20a63d6c7e
7 changed files with 20 additions and 22 deletions

View File

@@ -1434,23 +1434,23 @@ CommandLine::CommandLine(const FilePath &exe, const QString &args, RawType)
addArgs(args, Raw); addArgs(args, Raw);
} }
void CommandLine::addArg(const QString &arg, OsType osType) void CommandLine::addArg(const QString &arg)
{ {
ProcessArgs::addArg(&m_arguments, arg, osType); ProcessArgs::addArg(&m_arguments, arg, m_executable.osType());
} }
void CommandLine::addArgs(const QStringList &inArgs, OsType osType) void CommandLine::addArgs(const QStringList &inArgs)
{ {
for (const QString &arg : inArgs) for (const QString &arg : inArgs)
addArg(arg, osType); addArg(arg);
} }
// Adds cmd's executable and arguments one by one to this commandline. // Adds cmd's executable and arguments one by one to this commandline.
// Useful for 'sudo', 'nice', etc // Useful for 'sudo', 'nice', etc
void CommandLine::addArgs(const CommandLine &cmd, OsType osType) void CommandLine::addCommandLineAsArgs(const CommandLine &cmd)
{ {
addArg(cmd.executable().toString()); addArg(cmd.executable().path());
addArgs(cmd.splitArguments(osType)); addArgs(cmd.splitArguments());
} }
void CommandLine::addArgs(const QString &inArgs, RawType) void CommandLine::addArgs(const QString &inArgs, RawType)
@@ -1466,9 +1466,9 @@ QString CommandLine::toUserOutput() const
return res; return res;
} }
QStringList CommandLine::splitArguments(OsType osType) const QStringList CommandLine::splitArguments() const
{ {
return ProcessArgs::splitArgs(m_arguments, osType); return ProcessArgs::splitArgs(m_arguments, m_executable.osType());
} }
} // namespace Utils } // namespace Utils

View File

@@ -138,9 +138,10 @@ public:
CommandLine(const FilePath &exe, const QStringList &args); CommandLine(const FilePath &exe, const QStringList &args);
CommandLine(const FilePath &exe, const QString &unparsedArgs, RawType); CommandLine(const FilePath &exe, const QString &unparsedArgs, RawType);
void addArg(const QString &arg, OsType osType = HostOsInfo::hostOs()); void addArg(const QString &arg);
void addArgs(const QStringList &inArgs, OsType osType = HostOsInfo::hostOs()); void addArgs(const QStringList &inArgs);
void addArgs(const CommandLine &cmd, OsType osType = HostOsInfo::hostOs());
void addCommandLineAsArgs(const CommandLine &cmd);
void addArgs(const QString &inArgs, RawType); void addArgs(const QString &inArgs, RawType);
@@ -152,7 +153,7 @@ public:
QString arguments() const { return m_arguments; } QString arguments() const { return m_arguments; }
void setArguments(const QString &args) { m_arguments = args; } void setArguments(const QString &args) { m_arguments = args; }
QStringList splitArguments(OsType osType = HostOsInfo::hostOs()) const; QStringList splitArguments() const;
bool isEmpty() const { return m_executable.isEmpty(); } bool isEmpty() const { return m_executable.isEmpty(); }

View File

@@ -3841,7 +3841,7 @@ void GdbEngine::setupEngine()
Environment gdbEnv = rp.debugger.environment; Environment gdbEnv = rp.debugger.environment;
if (rp.runAsRoot) { if (rp.runAsRoot) {
CommandLine wrapped("sudo", {"-A"}); CommandLine wrapped("sudo", {"-A"});
wrapped.addArgs(gdbCommand); wrapped.addCommandLineAsArgs(gdbCommand);
gdbCommand = wrapped; gdbCommand = wrapped;
RunControl::provideAskPassEntry(gdbEnv); RunControl::provideAskPassEntry(gdbEnv);
} }

View File

@@ -1430,7 +1430,6 @@ void DockerDevice::runProcess(QtcProcess &process) const
} }
const FilePath workingDir = process.workingDirectory(); const FilePath workingDir = process.workingDirectory();
const CommandLine origCmd = process.commandLine();
const Environment env = process.environment(); const Environment env = process.environment();
CommandLine cmd{"docker", {"exec"}}; CommandLine cmd{"docker", {"exec"}};
@@ -1450,8 +1449,7 @@ void DockerDevice::runProcess(QtcProcess &process) const
// } // }
} }
cmd.addArg(d->m_container); cmd.addArg(d->m_container);
cmd.addArg(origCmd.executable().path()); // Cut off the docker://.../ bits. cmd.addCommandLineAsArgs(process.commandLine());
cmd.addArgs(origCmd.splitArguments(osType()));
LOG("Run" << cmd.toUserOutput() << " in " << workingDir.toUserOutput()); LOG("Run" << cmd.toUserOutput() << " in " << workingDir.toUserOutput());
@@ -1491,7 +1489,7 @@ bool DockerDevicePrivate::runInContainer(const CommandLine &cmd) const
if (!DockerPlugin::isDaemonRunning().value_or(false)) if (!DockerPlugin::isDaemonRunning().value_or(false))
return false; return false;
CommandLine dcmd{"docker", {"exec", m_container}}; CommandLine dcmd{"docker", {"exec", m_container}};
dcmd.addArgs(cmd); dcmd.addCommandLineAsArgs(cmd);
QtcProcess proc; QtcProcess proc;
proc.setCommand(dcmd); proc.setCommand(dcmd);

View File

@@ -393,7 +393,7 @@ void ApplicationLauncherPrivate::start(const Runnable &runnable, const IDevice::
CommandLine cmdLine = runnable.command; CommandLine cmdLine = runnable.command;
if (m_runAsRoot) { if (m_runAsRoot) {
CommandLine wrapped("sudo", {"-A"}); CommandLine wrapped("sudo", {"-A"});
wrapped.addArgs(cmdLine); wrapped.addCommandLineAsArgs(cmdLine);
cmdLine = wrapped; cmdLine = wrapped;
} }

View File

@@ -61,8 +61,7 @@ QnxQmlProfilerSupport::QnxQmlProfilerSupport(RunControl *runControl)
profiler->recordData("QmlServerUrl", serverUrl); profiler->recordData("QmlServerUrl", serverUrl);
Runnable r = runControl->runnable(); Runnable r = runControl->runnable();
r.command.addArg(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, serverUrl), r.command.addArg(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, serverUrl));
Utils::OsTypeOtherUnix);
doStart(r, runControl->device()); doStart(r, runControl->device());
}); });

View File

@@ -58,7 +58,7 @@ RemoteLinuxQmlToolingSupport::RemoteLinuxQmlToolingSupport(RunControl *runContro
QmlDebug::QmlDebugServicesPreset services = QmlDebug::servicesForRunMode(runControl->runMode()); QmlDebug::QmlDebugServicesPreset services = QmlDebug::servicesForRunMode(runControl->runMode());
Runnable r = runControl->runnable(); Runnable r = runControl->runnable();
r.command.addArg(QmlDebug::qmlDebugTcpArguments(services, serverUrl), OsTypeLinux); r.command.addArg(QmlDebug::qmlDebugTcpArguments(services, serverUrl));
doStart(r, runControl->device()); doStart(r, runControl->device());
}); });