src/eric7/RemoteServerInterface/EricServerFileSystemInterface.py

branch
server
changeset 10577
b9edebd77c91
parent 10576
0cf5ebf17411
child 10583
2114cc7275e8
diff -r 0cf5ebf17411 -r b9edebd77c91 src/eric7/RemoteServerInterface/EricServerFileSystemInterface.py
--- a/src/eric7/RemoteServerInterface/EricServerFileSystemInterface.py	Fri Feb 16 11:45:08 2024 +0100
+++ b/src/eric7/RemoteServerInterface/EricServerFileSystemInterface.py	Fri Feb 16 16:48:32 2024 +0100
@@ -59,14 +59,16 @@
                 cwd = params["directory"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Getcwd",
-            params={},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Getcwd",
+                params={},
+                callback=callback,
+            )
 
-        loop.exec()
+            loop.exec()
+
         return cwd
 
     def chdir(self, directory):
@@ -99,15 +101,19 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Chdir",
-            params={"directory": FileSystemUtilities.plainFileName(directory)},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Chdir",
+                params={"directory": FileSystemUtilities.plainFileName(directory)},
+                callback=callback,
+            )
 
-        loop.exec()
-        return ok, error
+            loop.exec()
+            return ok, error
+
+        else:
+            return False, "Not connected to an 'eric-ide' server."
 
     def listdir(self, directory=""):
         """
@@ -154,16 +160,17 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Listdir",
-            params={"directory": FileSystemUtilities.plainFileName(directory)},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Listdir",
+                params={"directory": FileSystemUtilities.plainFileName(directory)},
+                callback=callback,
+            )
 
-        loop.exec()
-        if not ok:
-            raise OSError(error)
+            loop.exec()
+            if not ok:
+                raise OSError(error)
 
         return listedDirectory, separator, listing
 
@@ -214,22 +221,23 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="DirEntries",
-            params={
-                "directory": FileSystemUtilities.plainFileName(directory),
-                "files_only": filesonly,
-                "pattern": [] if pattern is None else pattern,
-                "follow_symlinks": followsymlinks,
-                "ignore": [] if ignore is None else ignore,
-            },
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="DirEntries",
+                params={
+                    "directory": FileSystemUtilities.plainFileName(directory),
+                    "files_only": filesonly,
+                    "pattern": [] if pattern is None else pattern,
+                    "follow_symlinks": followsymlinks,
+                    "ignore": [] if ignore is None else ignore,
+                },
+                callback=callback,
+            )
 
-        loop.exec()
-        if not ok:
-            raise OSError(error)
+            loop.exec()
+            if not ok:
+                raise OSError(error)
 
         return result
 
@@ -269,19 +277,20 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Stat",
-            params={
-                "filename": FileSystemUtilities.plainFileName(filename),
-                "st_names": stNames,
-            },
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Stat",
+                params={
+                    "filename": FileSystemUtilities.plainFileName(filename),
+                    "st_names": stNames,
+                },
+                callback=callback,
+            )
 
-        loop.exec()
-        if not ok:
-            raise OSError(error)
+            loop.exec()
+            if not ok:
+                raise OSError(error)
 
         return stResult
 
@@ -294,8 +303,11 @@
         @return flag indicating a directory
         @rtype bool
         """
-        result = self.stat(name, ["st_mode"])
-        return stat.S_ISDIR(result["st_mode"])
+        with contextlib.suppress(KeyError, OSError):
+            result = self.stat(name, ["st_mode"])
+            return stat.S_ISDIR(result["st_mode"])
+
+        return False
 
     def isfile(self, name):
         """
@@ -306,8 +318,11 @@
         @return flag indicating a regular file
         @rtype bool
         """
-        result = self.stat(name, ["st_mode"])
-        return stat.S_ISREG(result["st_mode"])
+        with contextlib.suppress(KeyError, OSError):
+            result = self.stat(name, ["st_mode"])
+            return stat.S_ISREG(result["st_mode"])
+
+        return False
 
     def exists(self, name):
         """
@@ -336,14 +351,16 @@
                 nameExists = params["exists"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Exists",
-            params={"name": FileSystemUtilities.plainFileName(name)},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Exists",
+                params={"name": FileSystemUtilities.plainFileName(name)},
+                callback=callback,
+            )
 
-        loop.exec()
+            loop.exec()
+
         return nameExists
 
     def access(self, name, modes):
@@ -387,14 +404,19 @@
                 accessOK = params["ok"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Access",
-            params={"name": FileSystemUtilities.plainFileName(name), "modes": modes},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Access",
+                params={
+                    "name": FileSystemUtilities.plainFileName(name),
+                    "modes": modes,
+                },
+                callback=callback,
+            )
 
-        loop.exec()
+            loop.exec()
+
         return accessOK
 
     def mkdir(self, directory):
@@ -427,15 +449,19 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Mkdir",
-            params={"directory": FileSystemUtilities.plainFileName(directory)},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Mkdir",
+                params={"directory": FileSystemUtilities.plainFileName(directory)},
+                callback=callback,
+            )
 
-        loop.exec()
-        return ok, error
+            loop.exec()
+            return ok, error
+
+        else:
+            return False, "Not connected to an 'eric-ide' server."
 
     def rmdir(self, directory):
         """
@@ -467,15 +493,19 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Rmdir",
-            params={"directory": FileSystemUtilities.plainFileName(directory)},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Rmdir",
+                params={"directory": FileSystemUtilities.plainFileName(directory)},
+                callback=callback,
+            )
 
-        loop.exec()
-        return ok, error
+            loop.exec()
+            return ok, error
+
+        else:
+            return False, "Not connected to an 'eric-ide' server."
 
     def replace(self, oldName, newName):
         """
@@ -509,18 +539,22 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Replace",
-            params={
-                "old_name": FileSystemUtilities.plainFileName(oldName),
-                "new_name": FileSystemUtilities.plainFileName(newName),
-            },
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Replace",
+                params={
+                    "old_name": FileSystemUtilities.plainFileName(oldName),
+                    "new_name": FileSystemUtilities.plainFileName(newName),
+                },
+                callback=callback,
+            )
 
-        loop.exec()
-        return ok, error
+            loop.exec()
+            return ok, error
+
+        else:
+            return False, "Not connected to an 'eric-ide' server."
 
     def remove(self, filename):
         """
@@ -552,15 +586,19 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="Remove",
-            params={"filename": FileSystemUtilities.plainFileName(filename)},
-            callback=callback,
-        )
+        if self.__serverInterface.isServerConnected():
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="Remove",
+                params={"filename": FileSystemUtilities.plainFileName(filename)},
+                callback=callback,
+            )
 
-        loop.exec()
-        return ok, error
+            loop.exec()
+            return ok, error
+
+        else:
+            return False, "Not connected to an 'eric-ide' server."
 
     #######################################################################
     ## Methods for reading and writing files
@@ -605,21 +643,25 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="ReadFile",
-            params={
-                "filename": FileSystemUtilities.plainFileName(filename),
-                "create": create,
-            },
-            callback=callback,
-        )
+        if not self.__serverInterface.isServerConnected():
+            raise OSError("Not connected to an 'eric-ide' server.")
 
-        loop.exec()
-        if not ok:
-            raise OSError(error)
+        else:
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="ReadFile",
+                params={
+                    "filename": FileSystemUtilities.plainFileName(filename),
+                    "create": create,
+                },
+                callback=callback,
+            )
 
-        return bText
+            loop.exec()
+            if not ok:
+                raise OSError(error)
+
+            return bText
 
     def writeFile(self, filename, data, withBackup=False):
         """
@@ -655,17 +697,21 @@
                     error = params["error"]
                 loop.quit()
 
-        self.__serverInterface.sendJson(
-            category=EricRequestCategory.FileSystem,
-            request="WriteFile",
-            params={
-                "filename": FileSystemUtilities.plainFileName(filename),
-                "filedata": str(base64.b85encode(data), encoding="ascii"),
-                "with_backup": withBackup,
-            },
-            callback=callback,
-        )
+        if not self.__serverInterface.isServerConnected():
+            raise OSError("Not connected to an 'eric-ide' server.")
 
-        loop.exec()
-        if not ok:
-            raise OSError(error)
+        else:
+            self.__serverInterface.sendJson(
+                category=EricRequestCategory.FileSystem,
+                request="WriteFile",
+                params={
+                    "filename": FileSystemUtilities.plainFileName(filename),
+                    "filedata": str(base64.b85encode(data), encoding="ascii"),
+                    "with_backup": withBackup,
+                },
+                callback=callback,
+            )
+
+            loop.exec()
+            if not ok:
+                raise OSError(error)

eric ide

mercurial