diff -r f611c3b7313f -r de8175253dfc eric6/MicroPython/MicroPythonFileManager.py --- 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,