Add python script to DFU from a linux PC to the Pinetime
This commit is contained in:
52
bootloader/ota-dfu-python/unpacker.py
Normal file
52
bootloader/ota-dfu-python/unpacker.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import os.path
|
||||
import zipfile
|
||||
import tempfile
|
||||
import random
|
||||
import string
|
||||
import shutil
|
||||
import re
|
||||
|
||||
from os.path import basename
|
||||
|
||||
class Unpacker(object):
|
||||
#--------------------------------------------------------------------------
|
||||
#
|
||||
#--------------------------------------------------------------------------
|
||||
def entropy(self, length):
|
||||
return ''.join(random.choice('abcdefghijklmnopqrstuvwxyz') for i in range (length))
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
#
|
||||
#--------------------------------------------------------------------------
|
||||
def unpack_zipfile(self, file):
|
||||
|
||||
if not os.path.isfile(file):
|
||||
raise Exception("Error: file, not found!")
|
||||
|
||||
# Create unique working direction into which the zip file is expanded
|
||||
self.unzip_dir = "{0}/{1}_{2}".format(tempfile.gettempdir(), os.path.splitext(basename(file))[0], self.entropy(6))
|
||||
|
||||
datfilename = ""
|
||||
binfilename = ""
|
||||
|
||||
with zipfile.ZipFile(file, 'r') as zip:
|
||||
files = [item.filename for item in zip.infolist()]
|
||||
datfilename = [m.group(0) for f in files for m in [re.search('.*\.dat', f)] if m].pop()
|
||||
binfilename = [m.group(0) for f in files for m in [re.search('.*\.bin', f)] if m].pop()
|
||||
|
||||
zip.extractall(r'{0}'.format(self.unzip_dir))
|
||||
|
||||
datfile = "{0}/{1}".format(self.unzip_dir, datfilename)
|
||||
binfile = "{0}/{1}".format(self.unzip_dir, binfilename)
|
||||
|
||||
# print "DAT file: " + datfile
|
||||
# print "BIN file: " + binfile
|
||||
|
||||
return binfile, datfile
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
#
|
||||
#--------------------------------------------------------------------------
|
||||
def delete(self):
|
||||
# delete self.unzip_dir and its contents
|
||||
shutil.rmtree(self.unzip_dir)
|
Reference in New Issue
Block a user