diff --git a/jupyter_micropython_kernel/deviceconnector.py b/jupyter_micropython_kernel/deviceconnector.py index 97673f9..2bad015 100644 --- a/jupyter_micropython_kernel/deviceconnector.py +++ b/jupyter_micropython_kernel/deviceconnector.py @@ -333,6 +333,29 @@ def receivestream(self, bseekokay, bwarnokaypriors=True, b5secondtimeout=False): break # out of the for loop return True + def rmtree(self, top): + sswrite = self.workingserial.write if self.workingserial else self.workingwebsocket.send + sswrite( + b'def rmtree(top):\r\n' + b' import os\r\n' + b' try: os.remove(top)\r\n' + b' except OSError: pass\r\n' + b' try:\r\n' + b' for e in os.listdir(top):\r\n' + b' p = "/".join((top,e))\r\n' + b' try: os.remove(p)\r\n' + b' except: rmtree(p)\r\n' + b' os.rmdir(top)\r\n' + b' except OSError: pass\r\n' + b' done = False\r\n' + b' try: os.stat(top)\r\n' + b' except OSError: done = True\r\n' + b' return done\r\n\r\n' + ) + sswrite('if not rmtree({}): print("Failed to delete original {}")\r\n'.format(repr(top), top).encode()) + sswrite(b'del rmtree\r\n') + sswrite(b'\r\x04') # intermediate execution + self.receivestream(bseekokay=True) # Wait for it to execute def sendtofile(self, destinationfilename, bmkdir, bappend, bbinary, bquiet, filecontents): if not (self.workingserial or self.workingwebsocket): diff --git a/jupyter_micropython_kernel/kernel.py b/jupyter_micropython_kernel/kernel.py index 5e4294d..39686c6 100644 --- a/jupyter_micropython_kernel/kernel.py +++ b/jupyter_micropython_kernel/kernel.py @@ -377,13 +377,17 @@ def sendtofile(filename, contents): if os.path.isfile(apargs.source): filecontents = open(apargs.source, mode).read() if apargs.execute: - self.sres("Cannot excecute sourced file\n", 31) + self.sres("Cannot execute sourced file\n", 31) sendtofile(destfn, filecontents) elif os.path.isdir(apargs.source): if apargs.execute: - self.sres("Cannot excecute folder\n", 31) + self.sres("Cannot execute folder\n", 31) for root, dirs, files in os.walk(apargs.source): + + if apargs.mkdir: + self.dc.rmtree(destfn) + for fn in files: skip = False fp = os.path.join(root, fn)