[LPC1768] Add error-handling to upload script, update autobuild.py (#10802)

This commit is contained in:
Bob Kuhn 2018-05-20 21:22:04 -05:00 committed by Scott Lahteine
parent 68d7fcec83
commit 6dfbb39f83
2 changed files with 97 additions and 58 deletions

View file

@ -34,6 +34,7 @@ if current_OS == 'Windows':
# #
import os import os
upload_disk = 'Disk not found'
target_file_found = False target_file_found = False
target_drive_found = False target_drive_found = False
for drive in drives: for drive in drives:
@ -66,7 +67,9 @@ if current_OS == 'Windows':
env.Replace( env.Replace(
UPLOAD_PORT = upload_disk UPLOAD_PORT = upload_disk
) )
print 'upload disk: ' , upload_disk
else:
print '\nUnable to find destination disk. File must be copied manually. \n'
if current_OS == 'Linux': if current_OS == 'Linux':
@ -76,6 +79,7 @@ if current_OS == 'Linux':
# #
import os import os
upload_disk = 'Disk not found'
target_file_found = False target_file_found = False
target_drive_found = False target_drive_found = False
medias = os.listdir('/media') # medias = os.listdir('/media') #
@ -85,7 +89,11 @@ if current_OS == 'Linux':
target_drive_found = True target_drive_found = True
upload_disk = '/media/' + media + '/' + target_drive + '/' upload_disk = '/media/' + media + '/' + target_drive + '/'
for drive in drives: for drive in drives:
files = os.listdir('/media/' + media + '/' + drive ) # try:
files = os.listdir('/media/' + media + '/' + drive )
except:
continue
else:
if target_filename in files: if target_filename in files:
if target_file_found == False: if target_file_found == False:
upload_disk = '/media/' + media + '/' + drive + '/' upload_disk = '/media/' + media + '/' + drive + '/'
@ -101,6 +109,9 @@ if current_OS == 'Linux':
UPLOAD_FLAGS = "-P$UPLOAD_PORT", UPLOAD_FLAGS = "-P$UPLOAD_PORT",
UPLOAD_PORT = upload_disk UPLOAD_PORT = upload_disk
) )
print 'upload disk: ' , upload_disk
else:
print '\nUnable to find destination disk. File must be copied manually. \n'
if current_OS == 'Darwin': # MAC if current_OS == 'Darwin': # MAC
@ -110,15 +121,19 @@ if current_OS == 'Darwin': # MAC
# #
import os import os
upload_disk = 'Disk not found'
drives = os.listdir('/Volumes') # human readable names drives = os.listdir('/Volumes') # human readable names
target_file_found = False target_file_found = False
target_drive_found = False target_drive_found = False
if target_drive in drives and target_file_found == False: # set upload if not found target file yet if target_drive in drives and target_file_found == False: # set upload if not found target file yet
target_drive_found = True target_drive_found = True
upload_disk = '/Volumes/' + drive + '/' upload_disk = '/Volumes/' + target_drive + '/'
for drive in drives: for drive in drives:
target_file_found = True try:
filenames = os.listdir('/Volumes/' + drive + '/') filenames = os.listdir('/Volumes/' + drive + '/') # will get an error if the drive is protected
except:
continue
else:
if target_filename in filenames: if target_filename in filenames:
if target_file_found == False: if target_file_found == False:
upload_disk = '/Volumes/' + drive + '/' upload_disk = '/Volumes/' + drive + '/'
@ -132,3 +147,6 @@ if current_OS == 'Darwin': # MAC
env.Replace( env.Replace(
UPLOAD_PORT = upload_disk UPLOAD_PORT = upload_disk
) )
print '\nupload disk: ' , upload_disk, '\n'
else:
print '\nUnable to find destination disk. File must be copied manually. \n'

View file

@ -204,7 +204,7 @@ def resolve_path(path):
#get line and column numbers #get line and column numbers
line_num = 1 line_num = 1
column_num = 1 column_num = 1
line_start = path.find(':') line_start = path.find(':', 2) # use 2 here so don't eat Windows full path
column_start = path.find(':', line_start + 1) column_start = path.find(':', line_start + 1)
if column_start == -1: if column_start == -1:
column_start = len(path) column_start = len(path)
@ -218,12 +218,24 @@ def resolve_path(path):
if not(column_start == column_end): if not(column_start == column_end):
column_num = path[ column_start + 1 : column_end] column_num = path[ column_start + 1 : column_end]
if column_num == '': if column_num == '':
column_num = 1 column_num = 0
index_end = path.find(',')
if 0 <= index_end:
path = path[ : index_end] # delete comma and anything after
index_end = path.find(':', 2)
if 0 <= index_end:
path = path[ : path.find(':', 2)] # delete the line number and anything after
path = path[ : path.find(':')] # delete the line number and anything after
path = path.replace('\\','/') path = path.replace('\\','/')
if 1 == path.find(':') and current_OS == 'Windows':
return path, line_num, column_num # found a full path - no need for further processing
elif 0 == path.find('/') and (current_OS == 'Linux' or current_OS == 'Darwin'):
return path, line_num, column_num # found a full path - no need for further processing
else:
# resolve as many '../' as we can # resolve as many '../' as we can
while 0 <= path.find('../'): while 0 <= path.find('../'):
end = path.find('../') - 1 end = path.find('../') - 1
@ -324,6 +336,9 @@ def open_file(path):
elif current_OS == 'Linux': elif current_OS == 'Linux':
command = file_path + ':' + str(line_num) + ':' + str(column_num) command = file_path + ':' + str(line_num) + ':' + str(column_num)
index_end = command.find(',')
if 0 <= index_end:
command = command[ : index_end] # sometimes a comma magically appears, don't want it
running_apps = subprocess.Popen('ps ax -o cmd', stdout=subprocess.PIPE, shell=True) running_apps = subprocess.Popen('ps ax -o cmd', stdout=subprocess.PIPE, shell=True)
(output, err) = running_apps.communicate() (output, err) = running_apps.communicate()
temp = output.split('\n') temp = output.split('\n')
@ -336,7 +351,7 @@ def open_file(path):
return False , '' return False , ''
(success_sublime, editor_path_sublime) = find_editor_linux('sublime_text',temp) (success_sublime, editor_path_sublime) = find_editor_linux('sublime_text',temp)
(success_atom, editor_path_atom) = find_editor+linux('atom',temp) (success_atom, editor_path_atom) = find_editor_linux('atom',temp)
if success_sublime: if success_sublime:
subprocess.Popen([editor_path_sublime, command]) subprocess.Popen([editor_path_sublime, command])
@ -350,6 +365,9 @@ def open_file(path):
elif current_OS == 'Darwin': # MAC elif current_OS == 'Darwin': # MAC
command = file_path + ':' + str(line_num) + ':' + str(column_num) command = file_path + ':' + str(line_num) + ':' + str(column_num)
index_end = command.find(',')
if 0 <= index_end:
command = command[ : index_end] # sometimes a comma magically appears, don't want it
running_apps = subprocess.Popen('ps axwww -o command', stdout=subprocess.PIPE, shell=True) running_apps = subprocess.Popen('ps axwww -o command', stdout=subprocess.PIPE, shell=True)
(output, err) = running_apps.communicate() (output, err) = running_apps.communicate()
temp = output.split('\n') temp = output.split('\n')
@ -424,8 +442,11 @@ def get_build_last():
date_last = 0.0 date_last = 0.0
DIR__pioenvs = os.listdir('.pioenvs') DIR__pioenvs = os.listdir('.pioenvs')
for name in DIR__pioenvs: for name in DIR__pioenvs:
if 0 <= name.find('.') or 0 <= name.find('-'): # skip files in listing
continue
DIR_temp = os.listdir('.pioenvs/' + name) DIR_temp = os.listdir('.pioenvs/' + name)
for names_temp in DIR_temp: for names_temp in DIR_temp:
if 0 == names_temp.find('firmware.'): if 0 == names_temp.find('firmware.'):
date_temp = os.path.getmtime('.pioenvs/' + name + '/' + names_temp) date_temp = os.path.getmtime('.pioenvs/' + name + '/' + names_temp)
if date_temp > date_last: if date_temp > date_last:
@ -941,7 +962,7 @@ class output_window(Text):
Text.__init__(self, self.frame, borderwidth=3, relief="sunken") Text.__init__(self, self.frame, borderwidth=3, relief="sunken")
self.config(tabs=(400,)) # configure Text widget tab stops self.config(tabs=(400,)) # configure Text widget tab stops
self.config(background = 'black', foreground = 'white', font= ("consolas", 12), wrap = 'word', undo = 'True') self.config(background = 'black', foreground = 'white', font= ("consolas", 12), wrap = 'word', undo = 'True')
self.config(height = 24, width = 120) self.config(height = 24, width = 100)
self.config(insertbackground = 'pale green') # keyboard insertion point self.config(insertbackground = 'pale green') # keyboard insertion point
self.pack(side='left', fill='both', expand=True) self.pack(side='left', fill='both', expand=True)