aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/remotelinux/tarpackagedeploystep.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/remotelinux/tarpackagedeploystep.cpp')
-rw-r--r--src/plugins/remotelinux/tarpackagedeploystep.cpp118
1 files changed, 51 insertions, 67 deletions
diff --git a/src/plugins/remotelinux/tarpackagedeploystep.cpp b/src/plugins/remotelinux/tarpackagedeploystep.cpp
index ee276666ac8..6b50ca4dced 100644
--- a/src/plugins/remotelinux/tarpackagedeploystep.cpp
+++ b/src/plugins/remotelinux/tarpackagedeploystep.cpp
@@ -12,19 +12,44 @@
#include <projectexplorer/devicesupport/idevice.h>
#include <projectexplorer/projectexplorerconstants.h>
+#include <utils/process.h>
#include <utils/processinterface.h>
-#include <utils/qtcprocess.h>
using namespace ProjectExplorer;
+using namespace Tasking;
using namespace Utils;
-using namespace Utils::Tasking;
namespace RemoteLinux::Internal {
-class TarPackageDeployService : public AbstractRemoteLinuxDeployService
+// TarPackageDeployStep
+
+class TarPackageDeployStep : public AbstractRemoteLinuxDeployStep
{
public:
- void setPackageFilePath(const FilePath &filePath);
+ TarPackageDeployStep(BuildStepList *bsl, Id id)
+ : AbstractRemoteLinuxDeployStep(bsl, id)
+ {
+ setWidgetExpandedByDefault(false);
+
+ setInternalInitializer([this] {
+ const BuildStep *tarCreationStep = nullptr;
+
+ for (BuildStep *step : deployConfiguration()->stepList()->steps()) {
+ if (step == this)
+ break;
+ if (step->id() == Constants::TarPackageCreationStepId) {
+ tarCreationStep = step;
+ break;
+ }
+ }
+ if (!tarCreationStep)
+ return CheckResult::failure(Tr::tr("No tarball creation step found."));
+
+ m_packageFilePath =
+ FilePath::fromVariant(tarCreationStep->data(Constants::TarPackageFilePathId));
+ return isDeploymentPossible();
+ });
+ }
private:
QString remoteFilePath() const;
@@ -36,106 +61,65 @@ private:
FilePath m_packageFilePath;
};
-void TarPackageDeployService::setPackageFilePath(const FilePath &filePath)
-{
- m_packageFilePath = filePath;
-}
-
-QString TarPackageDeployService::remoteFilePath() const
+QString TarPackageDeployStep::remoteFilePath() const
{
return QLatin1String("/tmp/") + m_packageFilePath.fileName();
}
-bool TarPackageDeployService::isDeploymentNecessary() const
+bool TarPackageDeployStep::isDeploymentNecessary() const
{
return hasLocalFileChanged(DeployableFile(m_packageFilePath, {}));
}
-TaskItem TarPackageDeployService::uploadTask()
+TaskItem TarPackageDeployStep::uploadTask()
{
const auto setupHandler = [this](FileTransfer &transfer) {
const FilesToTransfer files {{m_packageFilePath,
deviceConfiguration()->filePath(remoteFilePath())}};
transfer.setFilesToTransfer(files);
- connect(&transfer, &FileTransfer::progress,
- this, &TarPackageDeployService::progressMessage);
- emit progressMessage(Tr::tr("Uploading package to device..."));
+ connect(&transfer, &FileTransfer::progress, this, &TarPackageDeployStep::addProgressMessage);
+ addProgressMessage(Tr::tr("Uploading package to device..."));
};
const auto doneHandler = [this](const FileTransfer &) {
- emit progressMessage(Tr::tr("Successfully uploaded package file."));
+ addProgressMessage(Tr::tr("Successfully uploaded package file."));
};
const auto errorHandler = [this](const FileTransfer &transfer) {
const ProcessResultData result = transfer.resultData();
- emit errorMessage(result.m_errorString);
+ addErrorMessage(result.m_errorString);
};
- return Transfer(setupHandler, doneHandler, errorHandler);
+ return FileTransferTask(setupHandler, doneHandler, errorHandler);
}
-TaskItem TarPackageDeployService::installTask()
+TaskItem TarPackageDeployStep::installTask()
{
- const auto setupHandler = [this](QtcProcess &process) {
+ const auto setupHandler = [this](Process &process) {
const QString cmdLine = QLatin1String("cd / && tar xvf ") + remoteFilePath()
+ " && (rm " + remoteFilePath() + " || :)";
process.setCommand({deviceConfiguration()->filePath("/bin/sh"), {"-c", cmdLine}});
- QtcProcess *proc = &process;
- connect(proc, &QtcProcess::readyReadStandardOutput, this, [this, proc] {
- emit stdOutData(proc->readAllStandardOutput());
+ Process *proc = &process;
+ connect(proc, &Process::readyReadStandardOutput, this, [this, proc] {
+ handleStdOutData(proc->readAllStandardOutput());
});
- connect(proc, &QtcProcess::readyReadStandardError, this, [this, proc] {
- emit stdErrData(proc->readAllStandardError());
+ connect(proc, &Process::readyReadStandardError, this, [this, proc] {
+ handleStdErrData(proc->readAllStandardError());
});
- emit progressMessage(Tr::tr("Installing package to device..."));
+ addProgressMessage(Tr::tr("Installing package to device..."));
};
- const auto doneHandler = [this](const QtcProcess &) {
+ const auto doneHandler = [this](const Process &) {
saveDeploymentTimeStamp(DeployableFile(m_packageFilePath, {}), {});
- emit progressMessage(Tr::tr("Successfully installed package file."));
+ addProgressMessage(Tr::tr("Successfully installed package file."));
};
- const auto errorHandler = [this](const QtcProcess &process) {
- emit errorMessage(Tr::tr("Installing package failed.") + process.errorString());
+ const auto errorHandler = [this](const Process &process) {
+ addErrorMessage(Tr::tr("Installing package failed.") + process.errorString());
};
- return Process(setupHandler, doneHandler, errorHandler);
+ return ProcessTask(setupHandler, doneHandler, errorHandler);
}
-Group TarPackageDeployService::deployRecipe()
+Group TarPackageDeployStep::deployRecipe()
{
return Group { uploadTask(), installTask() };
}
-// TarPackageDeployStep
-
-class TarPackageDeployStep : public AbstractRemoteLinuxDeployStep
-{
-public:
- TarPackageDeployStep(BuildStepList *bsl, Id id)
- : AbstractRemoteLinuxDeployStep(bsl, id)
- {
- auto service = new TarPackageDeployService;
- setDeployService(service);
-
- setWidgetExpandedByDefault(false);
-
- setInternalInitializer([this, service] {
- const BuildStep *tarCreationStep = nullptr;
-
- for (BuildStep *step : deployConfiguration()->stepList()->steps()) {
- if (step == this)
- break;
- if (step->id() == Constants::TarPackageCreationStepId) {
- tarCreationStep = step;
- break;
- }
- }
- if (!tarCreationStep)
- return CheckResult::failure(Tr::tr("No tarball creation step found."));
-
- const FilePath tarFile =
- FilePath::fromVariant(tarCreationStep->data(Constants::TarPackageFilePathId));
- service->setPackageFilePath(tarFile);
- return service->isDeploymentPossible();
- });
- }
-};
-
// TarPackageDeployStepFactory