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)