## Github Sponsors
-<a href="https://github.com/taifu"><img src="https://avatars2.githubusercontent.com/u/115712?s=88&v=4" title="Marco Beri" width="60" height="60"></a>
+<a href="https://github.com/gporcari"><img src="https://avatars2.githubusercontent.com/u/601732?v=4" title="Giovanni Porcari" width="100" height="100" style="border-radius: 50%"></a>
+<a href="https://github.com/svennek"><img src="https://avatars3.githubusercontent.com/u/37837?v=4" title="Svenne Krap" width="100" height="100" style="border-radius: 50%"></a>
+<a href="https://github.com/pontikos"><img src="https://avatars3.githubusercontent.com/u/3852020?v=4" title="Nikolas Pontikos" width="100" height="100" style="border-radius: 50%"></a>
+<a href="https://github.com/jdatcmd"><img src="https://avatars0.githubusercontent.com/u/330373?v=4" title="Joshua D. Drake" width="100" height="100" style="border-radius: 50%"></a>
+
+<a href="https://github.com/taifu"><img src="https://avatars1.githubusercontent.com/u/115712?v=4" title="Marco Beri" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/la-mar"><img src="https://avatars0.githubusercontent.com/u/16618300?v=4" title="Brock Friedrich" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/xarg"><img src="https://avatars2.githubusercontent.com/u/94721?v=4" title="Alex Plugaru" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/rafmagns-skepa-dreag"><img src="https://avatars0.githubusercontent.com/u/7447491?v=4" title="Richard H" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/rustprooflabs"><img src="https://avatars0.githubusercontent.com/u/3085224?v=4" title="Ryan Lambert" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/asqui"><img src="https://avatars3.githubusercontent.com/u/174182?v=4" title="Daniel Fortunov" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/iqbalabd"><img src="https://avatars2.githubusercontent.com/u/14254614?v=4" title="Iqbal Abdullah" width="60" height="60" style="border-radius: 50%"></a>
+<a href="https://github.com/c-rindi"><img src="https://avatars2.githubusercontent.com/u/7826876?v=4" title="C~+" width="60" height="60" style="border-radius: 50%"></a>
--- /dev/null
+#!/usr/bin/env python3
+r"""Add a github user to the backers file
+
+Print the tag to represent an user.
+
+Hint: to reprocess the list of users you can use:
+
+ grep "github.com.*100" BACKERS.md \
+ | sed 's|\(.*github.com/\)\([^"]\+\)\(.*\)|\2|' \
+ | xargs ./tools/add_backer.py --big
+
+ grep "github.com.*60" BACKERS.md \
+ | sed 's|\(.*github.com/\)\([^"]\+\)\(.*\)|\2|' \
+ | xargs ./tools/add_backer.py
+"""
+
+import sys
+import html
+import logging
+import requests
+
+logger = logging.getLogger()
+logging.basicConfig(
+ level=logging.INFO,
+ format='%(asctime)s %(levelname)s %(message)s')
+
+
+def main():
+ opt = parse_cmdline()
+ tags = []
+ for username in opt.username:
+ logger.info("fetching %s", username)
+ resp = requests.get(
+ f"https://api.github.com/users/{username}",
+ headers={"Accept": "application/vnd.github.v3+json"},
+ )
+ size = 100 if opt.big else 60
+ resp.raise_for_status()
+ data = resp.json()
+ tags.append(
+ f"""<a href="{data['html_url']}">"""
+ f"""<img src="{data['avatar_url']}" """
+ f"""title="{html.escape(data['name'])}" """
+ f"""width="{size}" height="{size}" """
+ f"""style="border-radius: 50%"></a>"""
+ )
+ for tag in tags:
+ print(tag)
+
+
+def parse_cmdline():
+ from argparse import ArgumentParser
+
+ parser = ArgumentParser(description=__doc__)
+ parser.add_argument("username", nargs="*", help="github user to add")
+ parser.add_argument("--big", action="store_true", help="make them larger")
+
+ opt = parser.parse_args()
+
+ return opt
+
+
+if __name__ == "__main__":
+ sys.exit(main())