eric6/MicroPython/MicroPythonFileManager.py

changeset 7174
de8175253dfc
parent 7139
9bb36ec2d1b5
child 7229
53054eb5b15a
--- a/eric6/MicroPython/MicroPythonFileManager.py	Mon Aug 26 12:43:26 2019 +0200
+++ b/eric6/MicroPython/MicroPythonFileManager.py	Mon Aug 26 18:41:48 2019 +0200
@@ -176,7 +176,7 @@
             self.error.emit("delete", str(exc))
     
     def __rsync(self, hostDirectory, deviceDirectory, mirror=True,
-                localDevice=False):
+                localDevice=False, indentLevel=0):
         """
         Private method to synchronize a local directory to the device.
         
@@ -189,9 +189,12 @@
         @type bool
         @param localDevice flag indicating device access via local file system
         @type bool
+        @param indentLevel indentation level for progress messages
+        @type int
         @return list of errors
         @rtype list of str
         """
+        indent = 4 * " "
         errors = []
         
         if not os.path.isdir(hostDirectory):
@@ -200,12 +203,14 @@
                 .format(hostDirectory)
             ]
         
+        indentStr = indentLevel * indent
         self.rsyncProgressMessage.emit(
-            self.tr("Synchronizing <b>{0}</b>.").format(deviceDirectory)
+            self.tr("{1}Synchronizing <b>{0}</b>.")
+            .format(deviceDirectory, indentStr)
         )
         
-        doneMessage = self.tr("Done synchronizing <b>{0}</b>.").format(
-            deviceDirectory)
+        doneMessage = self.tr("{1}Done synchronizing <b>{0}</b>.").format(
+            deviceDirectory, indentStr)
         
         sourceDict = {}
         sourceFiles = listdirStat(hostDirectory)
@@ -244,6 +249,7 @@
         toAdd = sourceSet - destinationSet                  # add to dev
         toDelete = destinationSet - sourceSet               # delete from dev
         toUpdate = destinationSet.intersection(sourceSet)   # update files
+        indentStr = (indentLevel + 1) * indent
         
         if localDevice:
             for sourceBasename in toAdd:
@@ -251,13 +257,15 @@
                 sourceFilename = os.path.join(hostDirectory, sourceBasename)
                 destFilename = os.path.join(deviceDirectory, sourceBasename)
                 self.rsyncProgressMessage.emit(
-                    self.tr("Adding <b>{0}</b>...").format(destFilename))
+                    self.tr("{1}Adding <b>{0}</b>...")
+                    .format(destFilename, indentStr))
                 if os.path.isfile(sourceFilename):
                     shutil.copy2(sourceFilename, destFilename)
                 elif os.path.isdir(sourceFilename):
                     # recurse
                     errs = self.__rsync(sourceFilename, destFilename,
-                                        mirror=mirror, localDevice=localDevice)
+                                        mirror=mirror, localDevice=localDevice,
+                                        indentLevel=indentLevel + 1)
                     # just note issues but ignore them otherwise
                     errors.extend(errs)
             
@@ -282,7 +290,8 @@
                         # both are directories => recurs
                         errs = self.__rsync(sourceFilename, destFilename,
                                             mirror=mirror,
-                                            localDevice=localDevice)
+                                            localDevice=localDevice,
+                                            indentLevel=indentLevel + 1)
                         # just note issues but ignore them otherwise
                         errors.extend(errs)
                     else:
@@ -311,9 +320,13 @@
             for sourceBasename in toAdd:
                 # name exists in source but not in device
                 sourceFilename = os.path.join(hostDirectory, sourceBasename)
-                destFilename = deviceDirectory + "/" + sourceBasename
+                if deviceDirectory == "/":
+                    destFilename = "/" + sourceBasename
+                else:
+                    destFilename = deviceDirectory + "/" + sourceBasename
                 self.rsyncProgressMessage.emit(
-                    self.tr("Adding <b>{0}</b>...").format(destFilename))
+                    self.tr("{1}Adding <b>{0}</b>...")
+                    .format(destFilename, indentStr))
                 if os.path.isfile(sourceFilename):
                     try:
                         self.__commandsInterface.put(sourceFilename,
@@ -324,16 +337,21 @@
                 elif os.path.isdir(sourceFilename):
                     # recurse
                     errs = self.__rsync(sourceFilename, destFilename,
-                                        mirror=mirror)
+                                        mirror=mirror,
+                                        indentLevel=indentLevel + 1)
                     # just note issues but ignore them otherwise
                     errors.extend(errs)
         
             if mirror:
                 for destBasename in toDelete:
                     # name exists in device but not local, delete
-                    destFilename = deviceDirectory + "/" + destBasename
+                    if deviceDirectory == "/":
+                        destFilename = "/" + sourceBasename
+                    else:
+                        destFilename = deviceDirectory + "/" + destBasename
                     self.rsyncProgressMessage.emit(
-                        self.tr("Removing <b>{0}</b>...").format(destFilename))
+                        self.tr("{1}Removing <b>{0}</b>...")
+                        .format(destFilename, indentStr))
                     try:
                         self.__commandsInterface.rmrf(destFilename,
                                                       recursive=True,
@@ -347,13 +365,17 @@
                 sourceStat = sourceDict[sourceBasename]
                 destStat = destinationDict[sourceBasename]
                 sourceFilename = os.path.join(hostDirectory, sourceBasename)
-                destFilename = deviceDirectory + "/" + sourceBasename
+                if deviceDirectory == "/":
+                    destFilename = "/" + sourceBasename
+                else:
+                    destFilename = deviceDirectory + "/" + sourceBasename
                 destMode = destStat[0]
                 if os.path.isdir(sourceFilename):
                     if stat.S_ISDIR(destMode):
                         # both are directories => recurs
                         errs = self.__rsync(sourceFilename, destFilename,
-                                            mirror=mirror)
+                                            mirror=mirror,
+                                            indentLevel=indentLevel + 1)
                         # just note issues but ignore them otherwise
                         errors.extend(errs)
                     else:
@@ -374,8 +396,8 @@
                     else:
                         if sourceStat[8] > destStat[8]:     # mtime
                             self.rsyncProgressMessage.emit(
-                                self.tr("Updating <b>{0}</b>...")
-                                .format(destFilename)
+                                self.tr("{1}Updating <b>{0}</b>...")
+                                .format(destFilename, indentStr)
                             )
                             try:
                                 self.__commandsInterface.put(sourceFilename,

eric ide

mercurial