diff --git a/tools/project.py b/tools/project.py index 3bd4f3a3a2..ad9e5ed209 100644 --- a/tools/project.py +++ b/tools/project.py @@ -18,6 +18,7 @@ from tools.targets import TARGET_NAMES from tools.utils import argparse_filestring_type, argparse_many, args_error from tools.utils import argparse_force_lowercase_type from tools.utils import argparse_force_uppercase_type +from tools.utils import print_large_string from tools.project_api import export_project, get_exporter_toolchain from tools.options import extract_profile @@ -189,7 +190,7 @@ def main(): # Only prints matrix of supported IDEs if options.supported_ides: - print mcu_ide_matrix() + print_large_string(mcu_ide_matrix()) exit(0) # Only prints matrix of supported IDEs diff --git a/tools/utils.py b/tools/utils.py index 734dfae0e0..6ee3271613 100644 --- a/tools/utils.py +++ b/tools/utils.py @@ -24,6 +24,7 @@ from shutil import copyfile from os.path import isdir, join, exists, split, relpath, splitext, abspath from os.path import commonprefix, normpath, dirname from subprocess import Popen, PIPE, STDOUT, call +from math import ceil import json from collections import OrderedDict import logging @@ -486,3 +487,23 @@ def argparse_dir_not_parent(other): else: return not_parent return parse_type + +def print_large_string(large_string): + """ Breaks a string up into smaller pieces before print them + + This is a limitation within Windows, as detailed here: + https://bugs.python.org/issue11395 + + Positional arguments: + large_string - the large string to print + """ + string_limit = 1000 + large_string_len = len(large_string) + num_parts = int(ceil(float(large_string_len) / float(string_limit))) + for string_part in range(num_parts): + start_index = string_part * string_limit + if string_part == num_parts - 1: + print large_string[start_index:] + else: + end_index = ((string_part + 1) * string_limit) - 1 + print large_string[start_index:end_index],