From: Daniele Varrazzo Date: Thu, 10 Dec 2020 11:04:46 +0000 (+0100) Subject: Backers file converted to yaml X-Git-Tag: 3.0.dev0~272 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9f52fbf60b5f7f23c317475424f4a5ac56c5ba3;p=thirdparty%2Fpsycopg.git Backers file converted to yaml It will be displayed at https://www.psycopg.org/sponsors/ --- diff --git a/BACKERS.md b/BACKERS.md deleted file mode 100644 index d28480a79..000000000 --- a/BACKERS.md +++ /dev/null @@ -1,23 +0,0 @@ -# psycopg3 backers - -`psycopg3` is brought to you thanks to the help of our generous backers. - -Thank you very much for supporting the project! - - -## Github Sponsors - - - - - - - - - - - - - - - diff --git a/BACKERS.yaml b/BACKERS.yaml new file mode 100644 index 000000000..c9e75bf67 --- /dev/null +++ b/BACKERS.yaml @@ -0,0 +1,60 @@ +--- +# You can find our sponsors at https://www.psycopg.org/sponsors/ Thank you! + +- username: gporcari + tier: top + avatar: https://avatars2.githubusercontent.com/u/601732?v=4 + name: Giovanni Porcari + +- username: svennek + tier: top + avatar: https://avatars3.githubusercontent.com/u/37837?v=4 + name: Svenne Krap + +- username: pontikos + tier: top + avatar: https://avatars3.githubusercontent.com/u/3852020?v=4 + name: Nikolas Pontikos + +- username: jdatcmd + tier: top + avatar: https://avatars0.githubusercontent.com/u/330373?v=4 + name: Joshua D. Drake + + +- username: taifu + avatar: https://avatars1.githubusercontent.com/u/115712?v=4 + name: Marco Beri + +- username: la-mar + avatar: https://avatars0.githubusercontent.com/u/16618300?v=4 + name: Brock Friedrich + +- username: xarg + avatar: https://avatars2.githubusercontent.com/u/94721?v=4 + name: Alex Plugaru + +- username: rafmagns-skepa-dreag + avatar: https://avatars0.githubusercontent.com/u/7447491?v=4 + name: Richard H + +- username: rustprooflabs + avatar: https://avatars0.githubusercontent.com/u/3085224?v=4 + name: Ryan Lambert + +- username: asqui + avatar: https://avatars3.githubusercontent.com/u/174182?v=4 + name: Daniel Fortunov + +- username: iqbalabd + avatar: https://avatars2.githubusercontent.com/u/14254614?v=4 + name: Iqbal Abdullah + +- username: c-rindi + avatar: https://avatars2.githubusercontent.com/u/7826876?v=4 + name: C~+ + +- username: Intevation + by: bernhardreiter + avatar: https://avatars2.githubusercontent.com/u/2050405?v=4 + name: Intevation diff --git a/tools/add_backer.py b/tools/add_backer.py deleted file mode 100755 index 33575851a..000000000 --- a/tools/add_backer.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/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"""""" - f"""""" - ) - 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()) diff --git a/tools/update_backer.py b/tools/update_backer.py new file mode 100755 index 000000000..33e69970b --- /dev/null +++ b/tools/update_backer.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +r"""Add or edit github users in the backers file +""" + +import sys +import logging +import requests +from pathlib import Path +from ruamel.yaml import YAML + +logger = logging.getLogger() +logging.basicConfig( + level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s" +) + + +def fetch_user(username): + logger.info("fetching %s", username) + resp = requests.get( + f"https://api.github.com/users/{username}", + headers={"Accept": "application/vnd.github.v3+json"}, + ) + resp.raise_for_status() + return resp.json() + + +def get_user_data(data): + """ + Get the data to save from the request data + """ + return { + "username": data["login"], + "avatar": data["avatar_url"], + "name": data["name"], + } + + +def add_entry(opt, filedata, username): + userdata = get_user_data(fetch_user(username)) + if opt.top: + userdata["tier"] = "top" + + filedata.append(userdata) + + +def update_entry(opt, filedata, entry): + # entry is an username or an user entry daat + if isinstance(entry, str): + username = entry + entry = [e for e in filedata if e["username"] == username] + if not entry: + raise Exception(f"{username} not found") + entry = entry[0] + else: + username = entry["username"] + + userdata = get_user_data(fetch_user(username)) + entry.update(userdata) + + +def main(): + opt = parse_cmdline() + logger.info("reading %s", opt.file) + yaml = YAML(typ="rt") + filedata = yaml.load(opt.file) + + for username in opt.add or (): + add_entry(opt, filedata, username) + + for username in opt.update or (): + update_entry(opt, filedata, username) + + if opt.update_all: + for entry in filedata: + update_entry(opt, filedata, entry) + + # yamllint happy + yaml.explicit_start = True + logger.info("writing %s", opt.file) + yaml.dump(filedata, opt.file) + + +def parse_cmdline(): + from argparse import ArgumentParser + + parser = ArgumentParser(description=__doc__) + parser.add_argument( + "--file", + help="the file to update [default: %(default)s]", + default=Path(__file__).parent.parent / "BACKERS.yaml", + type=Path, + ) + parser.add_argument( + "--add", + metavar="USERNAME", + nargs="+", + help="add USERNAME to the backers", + ) + + parser.add_argument( + "--top", + action="store_true", + help="add to the top tier", + ) + + parser.add_argument( + "--update", + metavar="USERNAME", + nargs="+", + help="update USERNAME data", + ) + + parser.add_argument( + "--update-all", + action="store_true", + help="update all the existing backers data", + ) + + opt = parser.parse_args() + + return opt + + +if __name__ == "__main__": + sys.exit(main())