@@ -87,6 +87,22 @@ def get_event_timestamp(repository, event, number):
8787 date = datetime .fromisoformat (data ["closed_at" ].replace ('Z' , '+00:00' ))
8888 return str (int (datetime .timestamp (date )))
8989
90+ def sanitize_filename (s ):
91+ char_to_remove = ["\\ " ,"$" ,"--" ,
92+ "." ,"," ,
93+ "`" ,"'" ,"\" " ,
94+ "(" ,")" ,"[" ,"]" ,"{" ,"}" ,"<" ,">" ,
95+ "*" ,"#" ,"@" ,"+" ,"=" ,":" ,"!" ,"%" ,"&" ]
96+ for v in char_to_remove :
97+ s = s .replace (v , "" )
98+
99+ char_to_replace = [" " ,"/" ,"|" ]
100+ replacement = "-"
101+ for v in char_to_replace :
102+ s = s .replace (v , replacement )
103+
104+ return s
105+
90106def parse_line (line , kind ):
91107 global fragments_counter
92108 fragments_counter += 1
@@ -99,10 +115,8 @@ def parse_line(line, kind):
99115 fragment_dict ["summary" ] = summary .lstrip (field_token ).strip ()
100116 fragment_dict ["summary" ] = fragment_dict ["summary" ].replace (":" , "" )
101117
102- title = fragment_dict ["summary" ]
103- title = title .replace (" " , "-" )
104- title = title .replace ("/" , "|" )
105- title = title .rstrip ("." )
118+ # sanitize filename and use only first 80 chars to prevent getting a filename too long (that may error on write)
119+ filename = sanitize_filename (fragment_dict ["summary" ].rstrip ("." ))[:80 ]
106120
107121 pr_repo , issue_repo , fragment_timestamp = "" , "" , ""
108122
@@ -147,7 +161,7 @@ def parse_line(line, kind):
147161 except KeyError :
148162 pass
149163
150- write_fragment (title , fragment_timestamp , fragment_dict )
164+ write_fragment (filename , fragment_timestamp , fragment_dict )
151165
152166def iterate_lines (f , kind = '' , skip = True ):
153167 line = next (f , None )
0 commit comments