Remove boost dependency
[platform/core/appfw/app-installers.git] / src / common / step / backup / step_backup_icons.cc
index 9c726a9..690049b 100644 (file)
@@ -6,53 +6,31 @@
 
 #include <pkgmgr-info.h>
 
-#include <boost/filesystem.hpp>
-#include <boost/system/error_code.hpp>
-
+#include <filesystem>
 #include <string>
 
-#include "common/paths.h"
+#include "common/utils/paths.h"
 #include "common/utils/file_util.h"
 #include "common/utils/glist_range.h"
 
-namespace bf = boost::filesystem;
-namespace bs = boost::system;
+namespace fs = std::filesystem;
 
 namespace common_installer {
 namespace backup {
 
+StepBackupIcons::StepBackupIcons(InstallerContext* context) : Step(context),
+    extra_icon_path_(nullptr) {}
+
 Step::Status StepBackupIcons::process() {
-  // gather icon info
-  const char* extra_icon_path = getIconPath(context_->uid.get(),
+  extra_icon_path_ = getIconPath(context_->uid.get(),
       context_->is_readonly_package.get());
-  if (!extra_icon_path)
+  if (!extra_icon_path_)
     return Status::OK;
 
-  for (auto iter = bf::directory_iterator(extra_icon_path);
-      iter != bf::directory_iterator(); ++iter) {
-    if (!bf::is_regular_file(iter->path()))
-      continue;
-    for (application_x* app : GListRange<application_x*>(
-        context_->old_manifest_data.get()->application)) {
-      if (app->icon) {
-        bf::path filename = iter->path().filename();
-        filename.replace_extension();
-        std::string id = filename.string();
-        if (id == app->appid) {
-          bf::path icon_backup = GetBackupPathForIconFile(iter->path());
-          icons_.emplace_back(iter->path(), icon_backup);
-        }
-      }
-    }
-  }
+  GetIconInfo();
 
-  // backup
-  for (auto& pair : icons_) {
-    if (!MoveFile(pair.first, pair.second, true)) {
-      LOG(ERROR) << "Cannot create backup for icon: " << pair.first;
-      return Status::ICON_ERROR;
-    }
-  }
+  if (!BackupIcons())
+    return Status::ICON_ERROR;
 
   LOG(DEBUG) << "Icons backup created";
   return Status::OK;
@@ -61,6 +39,7 @@ Step::Status StepBackupIcons::process() {
 Step::Status StepBackupIcons::clean() {
   RemoveBackupIcons();
   LOG(DEBUG) << "Icons backup removed";
+
   return Status::OK;
 }
 
@@ -72,12 +51,49 @@ Step::Status StepBackupIcons::undo() {
     }
   }
   LOG(DEBUG) << "Icons reverted from backup";
+
   return Status::OK;
 }
 
-void StepBackupIcons::RemoveBackupIcons() {
+bool StepBackupIcons::BackupIcons() {
   for (auto& pair : icons_) {
+    if (!MoveFile(pair.first, pair.second, true)) {
+      LOG(ERROR) << "Cannot create backup for icon: " << pair.first;
+      return false;
+    }
+  }
+
+  return true;
+}
+
+void StepBackupIcons::RemoveBackupIcons() {
+  for (auto& pair : icons_)
     Remove(pair.second);
+}
+
+void StepBackupIcons::GetIconInfo() {
+  for (auto iter = fs::directory_iterator(extra_icon_path_);
+      iter != fs::directory_iterator(); ++iter) {
+    if (!fs::is_regular_file(iter->path()))
+      continue;
+
+    AddAppIconToList(iter->path());
+  }
+}
+
+void StepBackupIcons::AddAppIconToList(std::filesystem::path path) {
+  for (application_x* app : GListRange<application_x*>(
+      context_->old_manifest_data.get()->application)) {
+    if (!app->icon)
+      continue;
+
+    fs::path filename = path.filename();
+    filename.replace_extension();
+    std::string id = filename.string();
+    if (id == app->appid) {
+      fs::path icon_backup = GetBackupPathForIconFile(path);
+      icons_.emplace_back(path, icon_backup);
+    }
   }
 }