Remove boost dependency
[platform/core/appfw/app-installers.git] / src / common / step / mount / step_mount_install.cc
index d41b1e0..d4313f9 100644 (file)
@@ -4,37 +4,34 @@
 
 #include "step/mount/step_mount_install.h"
 
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
-
+#include <filesystem>
 #include <string>
 
-#include "common/paths.h"
-#include "common/request.h"
+#include "common/shared_dirs.h"
+#include "common/utils/paths.h"
 #include "common/tzip_interface.h"
+#include "common/zip_interface.h"
 #include "common/utils/file_util.h"
+#include "common/utils/request.h"
 
-namespace bf = boost::filesystem;
-namespace bs = boost::system;
+namespace ci = common_installer;
+namespace fs = std::filesystem;
 
 namespace common_installer {
 namespace mount {
 
 Step::Status StepMountInstall::process() {
-  context_->pkg_path.set(
-      context_->root_application_path.get() / context_->pkgid.get());
-
-  TzipInterface tzip_unpack(context_->unpacked_dir_path.get());
-  if (!tzip_unpack.UnmountZip()) {
+  auto zip_unpack = CreateZipInterface(context_->unpacked_dir_path.get());
+  if (!zip_unpack->UnmountZip()) {
     LOG(ERROR) << "Failed to unmount zip package from temporary path";
     return Status::APP_DIR_ERROR;
   }
 
-  bf::path zip_destination_path =
-      GetZipPackageLocation(context_->pkg_path.get(), context_->pkgid.get());
-  if (!bf::exists(zip_destination_path.parent_path())) {
-    bs::error_code error;
-    bf::create_directories(zip_destination_path.parent_path(), error);
+  fs::path zip_destination_path =
+      GetZipPackageLocation(context_->GetPkgPath(), context_->pkgid.get());
+  if (!fs::exists(zip_destination_path.parent_path())) {
+    std::error_code error;
+    fs::create_directories(zip_destination_path.parent_path(), error);
     if (error) {
       LOG(ERROR) << "Failed to create diretory: "
                  << zip_destination_path.parent_path();
@@ -45,12 +42,13 @@ Step::Status StepMountInstall::process() {
   if (!CopyFile(context_->file_path.get(), zip_destination_path)) {
     return Status::APP_DIR_ERROR;
   }
+  ci::RemoveRWDirectories(zip_destination_path);
   context_->manifest_data.get()->zip_mount_file =
       strdup(zip_destination_path.c_str());
 
-  bf::path mount_point = GetMountLocation(context_->pkg_path.get());
-  TzipInterface tzip_final(mount_point);
-  if (!tzip_final.MountZip(zip_destination_path)) {
+  fs::path mount_point = GetMountLocation(context_->GetPkgPath());
+  auto zip_final = CreateZipInterface(mount_point);
+  if (!zip_final->MountZip(zip_destination_path)) {
     LOG(ERROR) << "Failed to mount zip package in installation path";
     return Status::APP_DIR_ERROR;
   }
@@ -60,9 +58,9 @@ Step::Status StepMountInstall::process() {
 }
 
 Step::Status StepMountInstall::UmountPackagePath() {
-  bf::path mount_point = GetMountLocation(context_->pkg_path.get());
-  TzipInterface tzip_final(mount_point);
-  if (!tzip_final.UnmountZip()) {
+  fs::path mount_point = GetMountLocation(context_->GetPkgPath());
+  auto zip_final = CreateZipInterface(mount_point);
+  if (!zip_final->UnmountZip()) {
     LOG(ERROR) << "Failed to unmount zip package after installation";
     return Status::APP_DIR_ERROR;
   }
@@ -70,16 +68,16 @@ Step::Status StepMountInstall::UmountPackagePath() {
   return Status::OK;
 }
 
-Step::Status StepMountInstall::clean() {
-  return UmountPackagePath();
-}
-
 Step::Status StepMountInstall::undo() {
-  bs::error_code error;
+  std::error_code error;
   UmountPackagePath();
-  bf::remove(GetZipPackageLocation(context_->pkg_path.get(),
+  fs::remove(GetZipPackageLocation(context_->GetPkgPath(),
                                    context_->pkgid.get()), error);
-  bf::remove_all(context_->pkg_path.get(), error);
+  if (error) {
+    LOG(ERROR) << "Failed to remove zip package";
+    return Status::APP_DIR_ERROR;
+  }
+  fs::remove_all(context_->GetPkgPath(), error);
   if (error) {
     LOG(ERROR) << "Failed to remove package content";
     return Status::APP_DIR_ERROR;
@@ -92,7 +90,7 @@ Step::Status StepMountInstall::precheck() {
     LOG(ERROR) << "root_application_path attribute is empty";
     return Step::Status::INVALID_VALUE;
   }
-  if (!bf::exists(context_->root_application_path.get())) {
+  if (!fs::exists(context_->root_application_path.get())) {
     LOG(ERROR) << "root_application_path ("
                << context_->root_application_path.get()
                << ") path does not exist";
@@ -103,7 +101,7 @@ Step::Status StepMountInstall::precheck() {
     LOG(ERROR) << "unpacked_dir_path attribute is empty";
     return Step::Status::INVALID_VALUE;
   }
-  if (!bf::exists(context_->unpacked_dir_path.get())) {
+  if (!fs::exists(context_->unpacked_dir_path.get())) {
     LOG(ERROR) << "unpacked_dir_path ("
                << context_->unpacked_dir_path.get()
                << ") path does not exist";
@@ -118,5 +116,12 @@ Step::Status StepMountInstall::precheck() {
   return Step::Status::OK;
 }
 
+std::unique_ptr<IZipInterface> StepMountInstall::CreateZipInterface(
+    const fs::path& mount_path) {
+  std::unique_ptr<IZipInterface> zip_interface(
+      new TzipInterface(mount_path));
+  return zip_interface;
+}
+
 }  // namespace mount
 }  // namespace common_installer