4ff1a0d5ea
Back targetEnvCommand() with a more general runCommand() that takes an argument selecting the location to run the command in. This allows us also to use the same API for running processes in the host during install, as we do for running them in the target system. One reason for this change is wanting to run (user-specified) commands and independently from the global dontChroot setting, run those commands in the live system or the target. This changes the ABI of the DLL, since targetEnvCommand() is no longer exported. Plugins will need to be recompiled. - refactor targetEnvCommand() into more general runCommand(). - While here, allow host system commands to run even if there is no global storage. - provide convenience accessors for ProcessResult members - Move explanation of process errors out of ProcessJob - Move from ProcessJob to ProcessResult, so it can be reused outside of ProcessJob (e.g. from ShellProcessJob). - Add some convenience functions, too.
57 lines
1.8 KiB
C++
57 lines
1.8 KiB
C++
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
|
*
|
|
* Copyright 2014, Teo Mrnjavac <teo@kde.org>
|
|
* Copyright 2017, Adriaan de Groot <groot@kde.org>
|
|
*
|
|
* Calamares is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Calamares is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef CALAMARES_PROCESSJOB_H
|
|
#define CALAMARES_PROCESSJOB_H
|
|
|
|
#include "Job.h"
|
|
|
|
namespace Calamares {
|
|
|
|
class ProcessJob : public Job
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit ProcessJob( const QString& command,
|
|
const QString& workingPath,
|
|
bool runInChroot = false,
|
|
int secondsTimeout = 30,
|
|
QObject* parent = nullptr );
|
|
virtual ~ProcessJob() override;
|
|
|
|
QString prettyName() const override;
|
|
QString prettyStatusMessage() const override;
|
|
JobResult exec() override;
|
|
|
|
private:
|
|
int callOutput( const QString& command,
|
|
QString& output,
|
|
const QString& workingPath = QString(),
|
|
const QString& stdInput = QString(),
|
|
int timeoutSec = 0 );
|
|
QString m_command;
|
|
QString m_workingPath;
|
|
bool m_runInChroot;
|
|
int m_timeoutSec;
|
|
};
|
|
|
|
} // namespace Calamares
|
|
|
|
#endif // CALAMARES_PROCESSJOB_H
|