diff --git a/.gitignore b/.gitignore index f40fbd8ba..2d9f2fbcd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ _site .jekyll-cache .jekyll-metadata vendor +__pycache__/ diff --git a/_data/signed/Claverhouse.yaml b/_data/signed/Claverhouse.yaml new file mode 100644 index 000000000..e0fd52f29 --- /dev/null +++ b/_data/signed/Claverhouse.yaml @@ -0,0 +1,2 @@ +name: Rupert Falcon Kavanagh ( Claverhouse ) +link: mailto:claverhouse@tutanota.de diff --git a/_data/signed/Dench.yaml b/_data/signed/Dench.yaml new file mode 100644 index 000000000..c33d5094f --- /dev/null +++ b/_data/signed/Dench.yaml @@ -0,0 +1,2 @@ +name: Denis Avksentev +link: https://dribbble.com/Dench diff --git a/_data/signed/EchedeyLR.yaml b/_data/signed/EchedeyLR.yaml new file mode 100644 index 000000000..e4ef22abe --- /dev/null +++ b/_data/signed/EchedeyLR.yaml @@ -0,0 +1,2 @@ +name: Echedey López Romero +link: https://git.disroot.org/ELR diff --git a/_data/signed/Invoker.yaml b/_data/signed/Invoker.yaml new file mode 100644 index 000000000..cf882a489 --- /dev/null +++ b/_data/signed/Invoker.yaml @@ -0,0 +1,2 @@ +name: Kaced Sofiane +link: mailto:kaced.sofiane@gmail.com diff --git a/_data/signed/Jagadees.yaml b/_data/signed/Jagadees.yaml new file mode 100644 index 000000000..137202349 --- /dev/null +++ b/_data/signed/Jagadees.yaml @@ -0,0 +1,2 @@ +name: jagadees, india. +link: https://neritam.com diff --git a/_data/signed/JoeSerpe.yaml b/_data/signed/JoeSerpe.yaml new file mode 100644 index 000000000..2fdadf231 --- /dev/null +++ b/_data/signed/JoeSerpe.yaml @@ -0,0 +1,2 @@ +name: Joe Serpe +link: https://simplemachines.it diff --git a/_data/signed/JorwLNKwpH.yaml b/_data/signed/JorwLNKwpH.yaml new file mode 100644 index 000000000..f4cf78ef2 --- /dev/null +++ b/_data/signed/JorwLNKwpH.yaml @@ -0,0 +1,2 @@ +name: 郝歌 +link: https://blog.hiddenharmonies.org/ diff --git a/_data/signed/MikeSafonov.yaml b/_data/signed/MikeSafonov.yaml new file mode 100644 index 000000000..5d10b18f9 --- /dev/null +++ b/_data/signed/MikeSafonov.yaml @@ -0,0 +1,2 @@ +name: Mike Safonov +link: https://github.com/MikeSafonov diff --git a/_data/signed/MrClon.yaml b/_data/signed/MrClon.yaml new file mode 100644 index 000000000..9e3def28f --- /dev/null +++ b/_data/signed/MrClon.yaml @@ -0,0 +1,2 @@ +name: MrClon +link: https://lor.sh/@MrClon diff --git a/_data/signed/PetrB.yaml b/_data/signed/PetrB.yaml new file mode 100644 index 000000000..867cbc5f7 --- /dev/null +++ b/_data/signed/PetrB.yaml @@ -0,0 +1,2 @@ +name: Petr Beliaev +link: https://github.com/User330639 diff --git a/_data/signed/Princess-Luna-at.yaml b/_data/signed/Princess-Luna-at.yaml new file mode 100644 index 000000000..ce579a804 --- /dev/null +++ b/_data/signed/Princess-Luna-at.yaml @@ -0,0 +1,2 @@ +name: Dominic Westreicher +link: mailto:d.westreicher@gmail.com diff --git a/_data/signed/Suguivy.yaml b/_data/signed/Suguivy.yaml new file mode 100644 index 000000000..5d32a2e4a --- /dev/null +++ b/_data/signed/Suguivy.yaml @@ -0,0 +1,2 @@ +name: Nei S. +link: https://nei.su diff --git a/_data/signed/ewm.yaml b/_data/signed/ewm.yaml new file mode 100644 index 000000000..cca8dfbe7 --- /dev/null +++ b/_data/signed/ewm.yaml @@ -0,0 +1,2 @@ +name: Eryk Michalak (ewm) +link: https://ewm.codeberg.page/ diff --git a/_data/signed/hulten.yaml b/_data/signed/hulten.yaml new file mode 100644 index 000000000..459eeab0e --- /dev/null +++ b/_data/signed/hulten.yaml @@ -0,0 +1,2 @@ +name: Marco van Hulten (FSF associate member) +link: http://marcovan.hulten.org/ diff --git a/_data/signed/if7.org.yaml b/_data/signed/if7.org.yaml new file mode 100644 index 000000000..ed1cd0243 --- /dev/null +++ b/_data/signed/if7.org.yaml @@ -0,0 +1,2 @@ +name: if7 +link: https://libreboot.org/ diff --git a/_data/signed/jakot.yaml b/_data/signed/jakot.yaml new file mode 100644 index 000000000..f04b9d7c8 --- /dev/null +++ b/_data/signed/jakot.yaml @@ -0,0 +1,2 @@ +name: jakot +link: https://gitlab.com/jakot diff --git a/_data/signed/jangid.yaml b/_data/signed/jangid.yaml new file mode 100644 index 000000000..ce618b62e --- /dev/null +++ b/_data/signed/jangid.yaml @@ -0,0 +1,2 @@ +name: Pankaj Jangid (Emacs Developer) +link: https://codeisgreat.org/ diff --git a/_data/signed/jao.yaml b/_data/signed/jao.yaml new file mode 100644 index 000000000..5fe463380 --- /dev/null +++ b/_data/signed/jao.yaml @@ -0,0 +1,2 @@ +name: Jose A Ortega Ruiz (FSF Associate Member, GNU MDK) +link: https://codeberg.org/jao diff --git a/_data/signed/krischik.yaml b/_data/signed/krischik.yaml new file mode 100644 index 000000000..74be6ac0f --- /dev/null +++ b/_data/signed/krischik.yaml @@ -0,0 +1,2 @@ +name: Martin Krischik +link: https://github.com/krischik diff --git a/_data/signed/kriztolized.yaml b/_data/signed/kriztolized.yaml new file mode 100644 index 000000000..8485bcf81 --- /dev/null +++ b/_data/signed/kriztolized.yaml @@ -0,0 +1,2 @@ +name: kriztolized +link: mailto:kriztolized@gmail.com diff --git a/_data/signed/leonardfactory.yaml b/_data/signed/leonardfactory.yaml new file mode 100644 index 000000000..293f3bc92 --- /dev/null +++ b/_data/signed/leonardfactory.yaml @@ -0,0 +1,2 @@ +name: Leonardo Ascione +link: https://github.com/leonardfactory diff --git a/_data/signed/lospirit.yaml b/_data/signed/lospirit.yaml new file mode 100644 index 000000000..c03de1a78 --- /dev/null +++ b/_data/signed/lospirit.yaml @@ -0,0 +1,2 @@ +name: Evgeniy B. +link: https://github.com/lospirit diff --git a/_data/signed/manul.yaml b/_data/signed/manul.yaml new file mode 100644 index 000000000..b0f1fd719 --- /dev/null +++ b/_data/signed/manul.yaml @@ -0,0 +1,2 @@ +name: Tinko Svrakov +link: mailto:manul91@abv.bg diff --git a/_data/signed/mcash.yaml b/_data/signed/mcash.yaml new file mode 100644 index 000000000..6e778b9dd --- /dev/null +++ b/_data/signed/mcash.yaml @@ -0,0 +1,2 @@ +name: Matthew Cashman +link: mailto:cashman@mit.edu diff --git a/_data/signed/neilhaskins.yaml b/_data/signed/neilhaskins.yaml new file mode 100644 index 000000000..01c3421c7 --- /dev/null +++ b/_data/signed/neilhaskins.yaml @@ -0,0 +1,2 @@ +name: Neil Haskins +link: https://neilhaskins.ca diff --git a/_data/signed/nf.yaml b/_data/signed/nf.yaml new file mode 100644 index 000000000..5f28372d4 --- /dev/null +++ b/_data/signed/nf.yaml @@ -0,0 +1,2 @@ +name: Nathan Follens (GNOME Foundation member) +link: https://l10n.gnome.org/users/nathan/ diff --git a/_data/signed/shtrih.yaml b/_data/signed/shtrih.yaml new file mode 100644 index 000000000..7dc8486d7 --- /dev/null +++ b/_data/signed/shtrih.yaml @@ -0,0 +1,2 @@ +name: Dmitry M +link: https://github.com/shtrih diff --git a/_data/signed/sideus.yaml b/_data/signed/sideus.yaml new file mode 100644 index 000000000..a8addf19b --- /dev/null +++ b/_data/signed/sideus.yaml @@ -0,0 +1,2 @@ +name: Kyal Smith, South Africa +link: mailto:kyal.smith@gmail.com diff --git a/_importer.py b/_importer.py new file mode 100644 index 000000000..6c15d099e --- /dev/null +++ b/_importer.py @@ -0,0 +1,60 @@ +import os + + +def save_signature(name, link, author): + with open(f"_data/signed/{author}.yaml", "w") as f: + f.write(f"name: {name.strip()}\nlink: {link.strip()}\n") + + +def parse_and_import_signature(content, author): + if os.path.isfile(f"_data/signed/{author}.yaml"): + return + + content_lines = [line.strip() for line in content.replace("`", "").strip().split("\n") if line.strip()] + imported = False + for i in range(len(content_lines) - 1): + if content_lines[i].lower().startswith("name:") and content_lines[i + 1].lower().startswith("link:"): + save_signature(content_lines[i][5:], content_lines[i + 1][5:], author) + imported = True + + # Apparently most people can't follow a two-line template, e.g. miss 'name:' + # or 'link:' or use 'site:' instead of 'link:' or use 'mailto:' instead of + # 'link: mailto:', etc., so we have to guess in what way their + # interpretation is wrong, and try to make the format at least somewhat + # correct. + if not imported and len(content_lines) == 2: + name, link = content_lines + + if name.lower().startswith("name:"): + name = name[5:] + + if link.lower().startswith("link:"): + link = link[5:] + elif link.lower().startswith("site:"): + link = link[5:] + elif link.lower().startswith("mail:"): + link = "mailto:" + link[5:].strip() + elif link.lower().startswith("email:"): + link = "mailto:" + link[6:].strip() + elif link.lower().startswith("mailto:"): + link = "mailto:" + link[7:].strip() + + # Demangle email + if "@" in link or "(at)" in link or "[at]" in link: + link = link.replace("[at]", "@") + link = link.replace("(at)", "@") + link = link.replace(" at ", "@") + link = link.replace("[dot]", ".") + link = link.replace("(dot)", ".") + link = link.replace(" dot ", ".") + link = link.replace(" ", "") + + # Add protocol to links without it + if "@" in link: + if not link.startswith("mailto:"): + link = f"mailto:{link}" + elif link.startswith("www.") or link.endswith(".com"): + link = f"https://{link}" + + if "/" in link or "@" in link: + save_signature(name, link, author) diff --git a/add-from-issue.py b/add-from-issue.py index 5f1ca4978..9037eec16 100644 --- a/add-from-issue.py +++ b/add-from-issue.py @@ -1,5 +1,5 @@ import subprocess -import os +from _importer import parse_and_import_signature parts = subprocess.run(["gh", "issue", "view", "837", "-c"], capture_output=True).stdout.split(b"\n--\n") @@ -11,25 +11,4 @@ for info, content in zip(parts[::2], parts[1::2]): info_dict[key] = value author = info_dict["author"] - - content_lines = [line.strip() for line in content.decode().replace("`", "").strip().split("\n") if line.strip()] - imported = False - for i in range(len(content_lines) - 1): - if content_lines[i].lower().startswith("name:") and content_lines[i + 1].lower().startswith("link:"): - if not os.path.isfile(f"_data/signed/{author}.yaml"): - with open(f"_data/signed/{author}.yaml", "w") as f: - f.write("name:" + content_lines[i][5:] + "\nlink:" + content_lines[i + 1][5:] + "\n") - imported = True - if not imported and len(content_lines) == 2: - name, link = content_lines - if name.lower().startswith("name:"): - name = name[5:] - name = name.strip() - if link.lower().startswith("link:"): - link = link[5:] - link = link.strip() - if "/" in link or "@" in link: - if not os.path.isfile(f"_data/signed/{author}.yaml"): - with open(f"_data/signed/{author}.yaml", "w") as f: - f.write(f"name: {name}\nlink: {link}\n") - + parse_and_import_signature(content.decode(), author) diff --git a/import-from-codeberg.py b/import-from-codeberg.py index 42c60aa01..b909a4854 100644 --- a/import-from-codeberg.py +++ b/import-from-codeberg.py @@ -1,5 +1,5 @@ import requests -import os +from _importer import parse_and_import_signature page = 1 @@ -10,26 +10,5 @@ while True: for comment in comments: author = comment["user"]["login"] content = comment["body"] - - content_lines = [line.strip() for line in content.replace("`", "").strip().split("\n") if line.strip()] - imported = False - for i in range(len(content_lines) - 1): - if content_lines[i].lower().startswith("name:") and content_lines[i + 1].lower().startswith("link:"): - if not os.path.isfile(f"_data/signed/{author}.yaml"): - with open(f"_data/signed/{author}.yaml", "w") as f: - f.write("name:" + content_lines[i][5:] + "\nlink:" + content_lines[i + 1][5:] + "\n") - imported = True - if not imported and len(content_lines) == 2: - name, link = content_lines - if name.lower().startswith("name:"): - name = name[5:] - name = name.strip() - if link.lower().startswith("link:"): - link = link[5:] - link = link.strip() - if "/" in link or "@" in link: - if not os.path.isfile(f"_data/signed/{author}.yaml"): - with open(f"_data/signed/{author}.yaml", "w") as f: - f.write(f"name: {name}\nlink: {link}\n") - + parse_and_import_signature(content, author) page += 1