Reader/Writer for JS and JSON files
| 90 | |
| 91 | |
| 92 | class JavaScriptEncoder(ScoutResultEncoder): |
| 93 | """ |
| 94 | Reader/Writer for JS and JSON files |
| 95 | """ |
| 96 | |
| 97 | def load_from_file(self, file_type, file_path=None, first_line=None): |
| 98 | if not file_path: |
| 99 | file_path, first_line = get_filename(file_type, self.report_name, self.report_dir) |
| 100 | with open(file_path) as f: |
| 101 | json_payload = f.readlines() |
| 102 | if first_line: |
| 103 | json_payload.pop(0) |
| 104 | json_payload = ''.join(json_payload) |
| 105 | return json.loads(json_payload) |
| 106 | |
| 107 | def save_to_file(self, content, file_type, force_write, debug): |
| 108 | config_path, first_line = get_filename(file_type, self.report_name, self.report_dir) |
| 109 | print_info('Saving data to %s' % config_path) |
| 110 | try: |
| 111 | with self.__open_file(config_path, force_write) as f: |
| 112 | if first_line: |
| 113 | print('%s' % first_line, file=f) |
| 114 | print('%s' % json.dumps(content, indent=4 if debug else None, separators=(',', ': '), sort_keys=True, |
| 115 | cls=ScoutJsonEncoder), file=f) |
| 116 | except AttributeError as e: |
| 117 | # __open_file returned None |
| 118 | pass |
| 119 | except Exception as e: |
| 120 | print_exception(e) |
| 121 | |
| 122 | @staticmethod |
| 123 | def __open_file(config_filename, force_write): |
| 124 | """ |
| 125 | |
| 126 | :param config_filename: |
| 127 | :param force_write: |
| 128 | :param quiet: |
| 129 | :return: |
| 130 | """ |
| 131 | if prompt_for_overwrite(config_filename, force_write): |
| 132 | try: |
| 133 | config_dirname = os.path.dirname(config_filename) |
| 134 | if not os.path.isdir(config_dirname): |
| 135 | os.makedirs(config_dirname) |
| 136 | return open(config_filename, 'wt') |
| 137 | except Exception as e: |
| 138 | print_exception(e) |
| 139 | else: |
| 140 | return None |