From 7d4ef8f4f32526533badb9e6342150eee9a58c80 Mon Sep 17 00:00:00 2001 From: remi-filament <30716308+remi-filament@users.noreply.github.com> Date: Fri, 19 Jan 2024 13:44:40 +0100 Subject: [PATCH] [DEL] remove obsolete OCA_PROJECTS --- tools/check_contrib | 98 -------------------- tools/oca_projects.py | 210 +----------------------------------------- 2 files changed, 1 insertion(+), 307 deletions(-) delete mode 100644 tools/check_contrib diff --git a/tools/check_contrib b/tools/check_contrib deleted file mode 100644 index 934b2ed79..000000000 --- a/tools/check_contrib +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/python -# License AGPLv3 (https://www.gnu.org/licenses/agpl-3.0-standalone.html) -from __future__ import division - -import subprocess -import itertools -import operator -import argparse -import os.path as osp -import sys - -from oca_projects import OCA_PROJECTS, url - -def get_contributions(projects, since, merges): - cmd =['git', 'log', '--pretty=format:%ai %ae'] - if since is not None: - cmd += ['--since', since] - if merges: - cmd += ['--merges'] - if isinstance(projects, (str, unicode)): - projects = [projects] - for project in projects: - contributions = {} - for repo in OCA_PROJECTS[project]: - if not osp.isdir(repo): - status = subprocess.call(['git', 'clone', '--quiet', url(repo), repo]) - if status != 0: - sys.stderr.write("%s not found on github\n" % repo) - continue - pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=repo) - out, error = pipe.communicate() - for line in out.splitlines(): - try: - date, hour, tz, author = line.split() - except ValueError: - sys.stderr.write('error parsing line:\n%s\n' % line) - continue - contributions.setdefault(author, []).append(date) - yield project, contributions - -def top_contributors(projects, since=None, merges=False, top=5): - for project, contributions in get_contributions(projects, since, merges): - contributors = sorted(contributions.iteritems(), - key=lambda x: len(x[1]), - reverse=True) - nb_contribs = sum(len(contribs) for author, contribs in contributors) - for author, contribs in contributors[:top]: - yield project, author, len(contribs), len(contribs) / nb_contribs, min(contribs), max(contribs) - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--since', - metavar='YYYY-MM-DD', - default=None, - help='only consider contributions since YYYY-MM-DD') - parser.add_argument('--merges', - default=False, - action='store_true', - help='only consider merges') - parser.add_argument('--nb-contrib', - default=5, - type=int, - help='number of contributors to consider') - parser.add_argument('--csv', - default=False, - action='store_true', - help='produce CSV output') - - project_names = sorted(OCA_PROJECTS) - args = parser.parse_args() - grouped = itertools.groupby(top_contributors(project_names, - since=args.since, - merges=args.merges, - top=args.nb_contrib), - operator.itemgetter(0)) - if args.csv: - print 'project,author,nb contrib,nb contrib(%),earliest,latest' - template = '%(project)s,%(author)s,%(nb_contrib)d,%(percent_contrib).0f,%(earliest)s,%(latest)s' - else: - template = ' %(author)-35s:\t%(nb_contrib) 4d [%(percent_contrib) 3.0f%%] %(earliest)s %(latest)s' - for project, contribs in grouped: - if not args.csv: - print project - for _p, author, nb_contrib, percent_contrib, earliest, latest in contribs: - info = {'project': project, - 'author': author, - 'percent_contrib': percent_contrib * 100, - 'nb_contrib': nb_contrib, - 'earliest': earliest, - 'latest': latest - } - print template % info - if not args.csv: - print - -if __name__ == "__main__": - main() - diff --git a/tools/oca_projects.py b/tools/oca_projects.py index 976c67e5e..686ebd5d6 100644 --- a/tools/oca_projects.py +++ b/tools/oca_projects.py @@ -3,10 +3,6 @@ """ Data about OCA Projects, with a few helper functions. -OCA_PROJECTS: dictionary of OCA Projects mapped to the list of related -repository names, based on -https://odoo-community.org/page/List - OCA_REPOSITORY_NAMES: list of OCA repository names """ @@ -21,209 +17,7 @@ from .config import NOT_ADDONS, is_main_branch from .github_login import login -ALL = ["OCA_PROJECTS", "OCA_REPOSITORY_NAMES", "url"] - -OCA_PROJECTS = { - "accounting": [ - "account-analytic", - "account-budgeting", - "account-closing", - "account-consolidation", - "account-financial-tools", - "account-financial-reporting", - "account-invoice-reporting", - "account-invoicing", - "account-fiscal-rule", - "operating-unit", - "intrastat", - "mis-builder", - "currency", - "credit-control", - "data-protection", - ], - # 'backport': ['OCB', - # ], - "Apps Store": ["apps-store"], - "banking": [ - "bank-payment", - "account-reconcile", - "bank-statement-import", - "account-payment", - ], - "community": [ - "maintainer-tools", - "maintainer-quality-tools", - "runbot-addons", - ], - "connector": [ - "connector", - "connector-ecommerce", - "queue", - ], - "connector AccountEdge": ["connector-accountedge"], - "connector CMIS": ["connector-cmis"], - "connector Infor": ["connector-infor"], - "connector Lengow": ["connector-lengow"], - "connector LIMS": ["connector-lims"], - "connector Magento": ["connector-magento"], - "connector Prestashop": ["connector-prestashop"], - "connector Sage": ["connector-sage"], - "connector Salesforce": ["connector-salesforce"], - "connector SPSCommerce": ["connector-spscommerce"], - "connector WooCommerce": ["connector-woocommerce"], - "crm sales marketing": [ - "sale-workflow", - "crm", - "partner-contact", - "sale-financial", - "sale-promotion", - "sale-reporting", - "commission", - "event", - "survey", - ], - "document": ["knowledge", "dms"], - "ecommerce": ["e-commerce"], - "edi": ["edi"], - "field-service": ["field-service"], - "financial control": ["margin-analysis"], - "fleet": ["fleet"], - "Infrastructure": ["infrastructure-dns"], - "geospatial": ["geospatial"], - "hr": [ - "timesheet", - "hr", - "hr-attendance", - "hr-expense", - "hr-holidays", - "department", - ], - "connector-odoo2odoo": ["connector-odoo2odoo"], - "multi-company": ["multi-company"], - "l10n-argentina": ["l10n-argentina"], - "l10n-austria": ["l10n-austria"], - "l10n-belarus": ["l10n-belarus"], - "l10n-belgium": ["l10n-belgium"], - "l10n-brazil": ["l10n-brazil"], - "l10n-cambodia": ["l10n-cambodia"], - "l10n-canada": ["l10n-canada"], - "l10n-chile": ["l10n-chile"], - "l10n-china": ["l10n-china"], - "l10n-colombia": ["l10n-colombia"], - "l10n-costa-rica": ["l10n-costa-rica"], - "l10n-croatia": ["l10n-croatia"], - "l10n-ecuador": ["l10n-ecuador"], - "l10n-estonia": ["l10n-estonia"], - "l10n-ethiopia": ["l10n-ethiopia"], - "l10n-finland": ["l10n-finland"], - "l10n-france": ["l10n-france"], - "l10n-germany": ["l10n-germany"], - "l10n-greece": ["l10n-greece"], - "l10n-india": ["l10n-india"], - "l10n-indonesia": ["l10n-indonesia"], - "l10n-iran": ["l10n-iran"], - "l10n-ireland": ["l10n-ireland"], - "l10n-italy": ["l10n-italy"], - "l10n-japan": ["l10n-japan"], - "l10n-luxemburg": ["l10n-luxemburg"], - "l10n-macedonia": ["l10n-macedonia"], - "l10n-mexico": ["l10n-mexico"], - "l10n-morocco": ["l10n-morocco"], - "l10n-netherlands": ["l10n-netherlands"], - "l10n-norway": ["l10n-norway"], - "l10n-peru": ["l10n-peru"], - "l10n-poland": ["l10n-poland"], - "l10n-portugal": ["l10n-portugal"], - "l10n-romania": ["l10n-romania"], - "l10n-russia": ["l10n-russia"], - "l10n-slovenia": ["l10n-slovenia"], - "l10n-spain": ["l10n-spain"], - "l10n-switzerland": ["l10n-switzerland"], - "l10n-taiwan": ["l10n-taiwan"], - "l10n-thailand": ["l10n-thailand"], - "l10n-turkey": ["l10n-turkey"], - "l10n-united-kingdom": ["l10n-united-kingdom"], - "l10n-uruguay": ["l10n-uruguay"], - "l10n-usa": ["l10n-usa"], - "l10n-venezuela": ["l10n-venezuela"], - "l10n-vietnam": ["l10n-vietnam"], - "logistics": [ - "carrier-delivery", - "stock-logistics-barcode", - "stock-logistics-workflow", - "stock-logistics-tracking", - "stock-logistics-warehouse", - "stock-logistics-reporting", - "rma", - "ddmrp", - "wms", - ], - "manufacturing": [ - "manufacture", - "manufacture-reporting", - ], - "management system": ["management-system"], - "pms": ["pms"], - "purchase": [ - "purchase-workflow", - "purchase-reporting", - ], - "product": [ - "product-attribute", - "product-kitting", - "product-variant", - "product-pack", - ], - "project / services": [ - "project-reporting", - "project-service", - "project-agile", - "contract", - "program", - "business-requirement", - "connector-redmine", - "connector-jira", - ], - "social": ["social"], - "storage": ["storage"], - "search-engine": ["search-engine"], - "tools": [ - "reporting-engine", - "report-print-send", - "webkit-tools", - "server-tools", - "server-auth", - "server-env", - "server-backend", - "server-brand", - "server-ux", - "community-data-files", - "webhook", - "interface-github", - "iot", - "rest-framework", - "role-policy", - ], - "vertical association": ["vertical-association"], - "vertical hotel": ["vertical-hotel"], - "vertical ISP": ["vertical-isp"], - "vertical edition": ["vertical-edition"], - "vertical education": ["vertical-education"], - "vertical medical": ["vertical-medical"], - "vertical NGO": [ - "vertical-ngo", - # XXX - ], - "vertical construction": ["vertical-construction"], - "vertical real estate": ["vertical-realestate"], - "vertical rental": ["vertical-rental"], - "vertical travel": ["vertical-travel"], - "web": ["web"], - "website": [ - "website", - "website-cms", - ], -} +ALL = ["OCA_REPOSITORY_NAMES", "url"] def get_repositories(): @@ -254,8 +48,6 @@ def get_repositories_and_branches(repos=(), branches=(), branch_filter=is_main_b except Exception as exc: print(exc) OCA_REPOSITORY_NAMES = [] - for repos in OCA_PROJECTS.values(): - OCA_REPOSITORY_NAMES += repos OCA_REPOSITORY_NAMES.sort()