Skip to content

Commit 3908672

Browse files
committed
Removing dependency on StringIO, only change return type of table export
1 parent 0e4b841 commit 3908672

File tree

2 files changed

+26
-28
lines changed

2 files changed

+26
-28
lines changed

tools/build_api.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,10 @@ def build_project(src_paths, build_path, target, toolchain_name,
459459
memap_table = ''
460460
if memap_instance:
461461
# Write output to stdout in text (pretty table) format
462-
memap_table = memap_instance.generate_output('table', silent=silent)
462+
memap_table = memap_instance.generate_output('table')
463+
464+
if not silent:
465+
print memap_table
463466

464467
# Write output to file in JSON format
465468
map_out = join(build_path, name + "_map.json")

tools/memap.py

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import json
1010
import argparse
1111
from prettytable import PrettyTable
12-
from StringIO import StringIO
1312

1413
from utils import argparse_filestring_type, \
1514
argparse_lowercase_hyphen_type, argparse_uppercase_type
@@ -386,59 +385,55 @@ def search_objects(self, path):
386385

387386
export_formats = ["json", "csv-ci", "table"]
388387

389-
def generate_output(self, export_format, file_output=None, silent=False):
388+
def generate_output(self, export_format, file_output=None):
390389
""" Generates summary of memory map data
391390
392391
Positional arguments:
393392
export_format - the format to dump
394393
395394
Keyword arguments:
396395
file_desc - descriptor (either stdout or file)
396+
397+
Returns: generated string for the 'table' format, otherwise None
397398
"""
398399

399400
try:
400-
if silent:
401-
file_desc = None
401+
if file_output:
402+
file_desc = open(file_output, 'wb')
402403
else:
403-
if file_output:
404-
file_desc = open(file_output, 'wb')
405-
else:
406-
file_desc = sys.stdout
404+
file_desc = sys.stdout
407405
except IOError as error:
408406
print "I/O error({0}): {1}".format(error.errno, error.strerror)
409407
return False
410408

411409
to_call = {'json': self.generate_json,
412410
'csv-ci': self.generate_csv,
413411
'table': self.generate_table}[export_format]
414-
output_string = to_call(file_desc)
412+
output = to_call(file_desc)
415413

416-
if file_desc is not sys.stdout and file_desc is not None:
414+
if file_desc is not sys.stdout:
417415
file_desc.close()
418416

419-
return output_string
417+
return output
420418

421419
def generate_json(self, file_desc):
422420
"""Generate a json file from a memory map
423421
424422
Positional arguments:
425423
file_desc - the file to write out the final report to
426424
"""
427-
output = json.dumps(self.mem_report, indent=4)
428-
if file_desc:
429-
file_desc.write(output)
430-
file_desc.write('\n')
425+
file_desc.write(json.dumps(self.mem_report, indent=4))
426+
file_desc.write('\n')
431427

432-
return output
428+
return None
433429

434430
def generate_csv(self, file_desc):
435431
"""Generate a CSV file from a memoy map
436432
437433
Positional arguments:
438434
file_desc - the file to write out the final report to
439435
"""
440-
string_io = StringIO()
441-
csv_writer = csv.writer(string_io, delimiter=',',
436+
csv_writer = csv.writer(file_desc, delimiter=',',
442437
quoting=csv.QUOTE_MINIMAL)
443438

444439
csv_module_section = []
@@ -472,16 +467,15 @@ def generate_csv(self, file_desc):
472467
csv_writer.writerow(csv_module_section)
473468
csv_writer.writerow(csv_sizes)
474469

475-
if file_desc:
476-
file_desc.write(string_io.getvalue())
477-
478-
return string_io.getvalue()
470+
return None
479471

480472
def generate_table(self, file_desc):
481473
"""Generate a table from a memoy map
482474
483475
Positional arguments:
484476
file_desc - the file to write out the final report to
477+
478+
Returns: string of the generated table
485479
"""
486480
# Create table
487481
columns = ['Module']
@@ -539,9 +533,6 @@ def generate_table(self, file_desc):
539533
output += "Total Flash memory (text + data + misc): %s bytes\n" % \
540534
str(self.mem_summary['total_flash'])
541535

542-
if file_desc:
543-
file_desc.write(output)
544-
545536
return output
546537

547538
toolchains = ["ARM", "ARM_STD", "ARM_MICRO", "GCC_ARM", "IAR"]
@@ -666,11 +657,15 @@ def main():
666657
if memap.parse(args.file, args.toolchain) is False:
667658
sys.exit(0)
668659

660+
returned_string = None
669661
# Write output in file
670662
if args.output != None:
671-
memap.generate_output(args.export, args.output)
663+
returned_string = memap.generate_output(args.export, args.output)
672664
else: # Write output in screen
673-
memap.generate_output(args.export)
665+
returned_string = memap.generate_output(args.export)
666+
667+
if args.export == 'table' and returned_string:
668+
print returned_string
674669

675670
sys.exit(0)
676671

0 commit comments

Comments
 (0)