Removing dependency on StringIO, only change return type of table export

pull/2990/head
Brian Daniels 2016-10-11 18:37:54 -05:00
parent 0e4b841cb3
commit 39086722e8
2 changed files with 26 additions and 28 deletions

View File

@ -459,7 +459,10 @@ def build_project(src_paths, build_path, target, toolchain_name,
memap_table = '' memap_table = ''
if memap_instance: if memap_instance:
# Write output to stdout in text (pretty table) format # Write output to stdout in text (pretty table) format
memap_table = memap_instance.generate_output('table', silent=silent) memap_table = memap_instance.generate_output('table')
if not silent:
print memap_table
# Write output to file in JSON format # Write output to file in JSON format
map_out = join(build_path, name + "_map.json") map_out = join(build_path, name + "_map.json")

View File

@ -9,7 +9,6 @@ import csv
import json import json
import argparse import argparse
from prettytable import PrettyTable from prettytable import PrettyTable
from StringIO import StringIO
from utils import argparse_filestring_type, \ from utils import argparse_filestring_type, \
argparse_lowercase_hyphen_type, argparse_uppercase_type argparse_lowercase_hyphen_type, argparse_uppercase_type
@ -386,7 +385,7 @@ class MemapParser(object):
export_formats = ["json", "csv-ci", "table"] export_formats = ["json", "csv-ci", "table"]
def generate_output(self, export_format, file_output=None, silent=False): def generate_output(self, export_format, file_output=None):
""" Generates summary of memory map data """ Generates summary of memory map data
Positional arguments: Positional arguments:
@ -394,12 +393,11 @@ class MemapParser(object):
Keyword arguments: Keyword arguments:
file_desc - descriptor (either stdout or file) file_desc - descriptor (either stdout or file)
Returns: generated string for the 'table' format, otherwise None
""" """
try: try:
if silent:
file_desc = None
else:
if file_output: if file_output:
file_desc = open(file_output, 'wb') file_desc = open(file_output, 'wb')
else: else:
@ -411,12 +409,12 @@ class MemapParser(object):
to_call = {'json': self.generate_json, to_call = {'json': self.generate_json,
'csv-ci': self.generate_csv, 'csv-ci': self.generate_csv,
'table': self.generate_table}[export_format] 'table': self.generate_table}[export_format]
output_string = to_call(file_desc) output = to_call(file_desc)
if file_desc is not sys.stdout and file_desc is not None: if file_desc is not sys.stdout:
file_desc.close() file_desc.close()
return output_string return output
def generate_json(self, file_desc): def generate_json(self, file_desc):
"""Generate a json file from a memory map """Generate a json file from a memory map
@ -424,12 +422,10 @@ class MemapParser(object):
Positional arguments: Positional arguments:
file_desc - the file to write out the final report to file_desc - the file to write out the final report to
""" """
output = json.dumps(self.mem_report, indent=4) file_desc.write(json.dumps(self.mem_report, indent=4))
if file_desc:
file_desc.write(output)
file_desc.write('\n') file_desc.write('\n')
return output return None
def generate_csv(self, file_desc): def generate_csv(self, file_desc):
"""Generate a CSV file from a memoy map """Generate a CSV file from a memoy map
@ -437,8 +433,7 @@ class MemapParser(object):
Positional arguments: Positional arguments:
file_desc - the file to write out the final report to file_desc - the file to write out the final report to
""" """
string_io = StringIO() csv_writer = csv.writer(file_desc, delimiter=',',
csv_writer = csv.writer(string_io, delimiter=',',
quoting=csv.QUOTE_MINIMAL) quoting=csv.QUOTE_MINIMAL)
csv_module_section = [] csv_module_section = []
@ -472,16 +467,15 @@ class MemapParser(object):
csv_writer.writerow(csv_module_section) csv_writer.writerow(csv_module_section)
csv_writer.writerow(csv_sizes) csv_writer.writerow(csv_sizes)
if file_desc: return None
file_desc.write(string_io.getvalue())
return string_io.getvalue()
def generate_table(self, file_desc): def generate_table(self, file_desc):
"""Generate a table from a memoy map """Generate a table from a memoy map
Positional arguments: Positional arguments:
file_desc - the file to write out the final report to file_desc - the file to write out the final report to
Returns: string of the generated table
""" """
# Create table # Create table
columns = ['Module'] columns = ['Module']
@ -539,9 +533,6 @@ class MemapParser(object):
output += "Total Flash memory (text + data + misc): %s bytes\n" % \ output += "Total Flash memory (text + data + misc): %s bytes\n" % \
str(self.mem_summary['total_flash']) str(self.mem_summary['total_flash'])
if file_desc:
file_desc.write(output)
return output return output
toolchains = ["ARM", "ARM_STD", "ARM_MICRO", "GCC_ARM", "IAR"] toolchains = ["ARM", "ARM_STD", "ARM_MICRO", "GCC_ARM", "IAR"]
@ -666,11 +657,15 @@ def main():
if memap.parse(args.file, args.toolchain) is False: if memap.parse(args.file, args.toolchain) is False:
sys.exit(0) sys.exit(0)
returned_string = None
# Write output in file # Write output in file
if args.output != None: if args.output != None:
memap.generate_output(args.export, args.output) returned_string = memap.generate_output(args.export, args.output)
else: # Write output in screen else: # Write output in screen
memap.generate_output(args.export) returned_string = memap.generate_output(args.export)
if args.export == 'table' and returned_string:
print returned_string
sys.exit(0) sys.exit(0)