Skip to content

Commit be113b9

Browse files
authored
Changelog conversion script filename sanitization (#104)
1 parent 3a72a2a commit be113b9

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

tools/asciidoc_to_fragments.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
90106
def 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

152166
def iterate_lines(f, kind='', skip=True):
153167
line = next(f, None)

0 commit comments

Comments
 (0)