1#!/usr/bin/env python3 2 3from __future__ import print_function 4import os 5from .report import Report 6from .unified_format_parser import UnifiedFormatParser 7 8 9class Debug: 10 def __init__(self, args): 11 self.args = args 12 13 def __get_debug_out_filename(self, path, type): 14 # type: (str, str) -> str 15 # Take basename 16 file_name = os.path.basename(path) 17 # Split in name and extension 18 file_name = os.path.splitext(file_name) 19 if self.args.out != "stdout": 20 out_folder = os.path.dirname(self.args.out) 21 else: 22 out_folder = "./" 23 dbg_report_path = out_folder + file_name[0] + type + file_name[1] 24 25 return dbg_report_path 26 27 def __debug_print_report(self, report, type): 28 # type: (Report, str) -> None 29 report_name = self.__get_debug_out_filename(report.get_report_path(), 30 type) 31 try: 32 with open(report_name, "wt") as outfile: 33 print(report, end="", file=outfile) 34 except OSError as e: 35 print("ERROR: Issue opening file {}: {}".format(report_name, e)) 36 37 def debug_print_parsed_report(self, report): 38 # type: (Report) -> None 39 if not self.args.debug: 40 return 41 self.__debug_print_report(report, ".parsed") 42 43 def debug_print_patched_report(self, report): 44 # type: (Report) -> None 45 if not self.args.debug: 46 return 47 # The patched report contains already .patched in its name 48 self.__debug_print_report(report, "") 49 50 def debug_print_parsed_diff(self, diff): 51 # type: (UnifiedFormatParser) -> None 52 if not self.args.debug: 53 return 54 diff_filename = diff.get_diff_path() 55 out_pathname = self.__get_debug_out_filename(diff_filename, ".parsed") 56 try: 57 with open(out_pathname, "wt") as outfile: 58 for change_obj in diff.get_change_sets().values(): 59 print(change_obj, end="", file=outfile) 60 except OSError as e: 61 print("ERROR: Issue opening file {}: {}".format(out_pathname, e)) 62