Forráskód Böngészése

HackStudio: Implement removing file from disk

Bui Quang Minh 4 éve
szülő
commit
ee7c8fbd7b
1 módosított fájl, 21 hozzáadás és 4 törlés
  1. 21 4
      Userland/DevTools/HackStudio/HackStudioWidget.cpp

+ 21 - 4
Userland/DevTools/HackStudio/HackStudioWidget.cpp

@@ -376,15 +376,32 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_delete_action()
             return;
 
         for (auto& file : files) {
-            if (1) {
-                // FIXME: Remove `file` from disk
-            } else {
+            struct stat st;
+            if (lstat(file.characters(), &st) < 0) {
                 GUI::MessageBox::show(window(),
-                    String::formatted("Removing file {} from the project failed.", file),
+                    String::formatted("lstat ({}) failed: {}", file, strerror(errno)),
                     "Removal failed",
                     GUI::MessageBox::Type::Error);
                 break;
             }
+
+            bool is_directory = S_ISDIR(st.st_mode);
+            auto result = Core::File::remove(file, Core::File::RecursionMode::Allowed, false);
+            if (result.is_error()) {
+                auto& error = result.error();
+                if (is_directory) {
+                    GUI::MessageBox::show(window(),
+                        String::formatted("Removing directory {} from the project failed: {}", error.file, error.error_code),
+                        "Removal failed",
+                        GUI::MessageBox::Type::Error);
+                } else {
+                    GUI::MessageBox::show(window(),
+                        String::formatted("Removing file {} from the project failed: {}", error.file, error.error_code),
+                        "Removal failed",
+                        GUI::MessageBox::Type::Error);
+                }
+                break;
+            }
         }
     });
     delete_action->set_enabled(false);