diff --git a/PICable.py b/PICable.py index dfa37ca..f8cee6a 100644 --- a/PICable.py +++ b/PICable.py @@ -5,7 +5,7 @@ from datetime import datetime, timedelta import requests -LIMIT_COMMITS_30_DAYS = 50 # Has to be <= 100 +LIMIT_COMMITS_30_DAYS = 50 # Has to be <= 100 LIMIT_STARS = 200 LIMIT_NLOC = 100000 MARGIN = 0.1 @@ -29,10 +29,10 @@ def get_commits_last_30_days(owner, repo, token): print(since) commits_url = f"https://api.github.com/repos/{owner}/{repo}/commits?since={since}&per_page={LIMIT_COMMITS_30_DAYS}" commits_response = requests.get(commits_url, headers=headers) - + if commits_response.status_code != 200: return -1 - + commits_30_days = len(commits_response.json()) return commits_30_days @@ -65,46 +65,52 @@ def PICable(owner, repository, token): stars = get_stars_info(owner, repository, token) if stars == -1: - return "The repository does not exist or the token is invalid. ❌" + return "The repository does not exist or the token is invalid. :x:" if stars >= LIMIT_STARS: - res += f"The repository has over {LIMIT_STARS} stars. ✅\n" + res += f"The repository has at least {LIMIT_STARS} stars. :white_check_mark:\n" elif stars >= LIMIT_STARS * (1 - MARGIN): - res += f"The repository has {stars}, which is close to the limit of {LIMIT_STARS} stars, considering a {margin_percentage}% margin. ⭕\n" + res += f"The repository has {stars}, which is close to the limit of {LIMIT_STARS} stars, considering a {margin_percentage}% margin. :warning:\n" else: - res += f"The repository has {stars} stars, which is way below the limit of {LIMIT_STARS} stars, considering a {margin_percentage}% margin. ❌\n" + res += f"The repository has {stars} stars, which is way below the limit of {LIMIT_STARS} stars, considering a {margin_percentage}% margin. :x:\n" commits_30_days = get_commits_last_30_days(owner, repository, token) if commits_30_days == -1: - return "The repository does not exist or the token is invalid. ❌" + return "The repository does not exist or the token is invalid. :x:" if commits_30_days >= LIMIT_COMMITS_30_DAYS: - res += f"The repository has over {LIMIT_COMMITS_30_DAYS} commits in the last 30 days. ✅\n" + res += f"The repository has at least {LIMIT_COMMITS_30_DAYS} commits in the last 30 days. :white_check_mark:\n" elif commits_30_days >= LIMIT_COMMITS_30_DAYS * (1 - MARGIN): - res += f"The repository has {commits_30_days} commits in the last 30 days, which is close to the limit of {LIMIT_COMMITS_30_DAYS} commits, considering a {margin_percentage}% margin. ⭕\n" + res += f"The repository has {commits_30_days} commits in the last 30 days, which is close to the limit of {LIMIT_COMMITS_30_DAYS} commits, considering a {margin_percentage}% margin. :warning:\n" else: - res += f"The repository has {commits_30_days} commits in the last 30 days, which is way below the limit of {LIMIT_COMMITS_30_DAYS} commits, considering a {margin_percentage}% margin. ❌\n" + res += f"The repository has {commits_30_days} commits in the last 30 days, which is way below the limit of {LIMIT_COMMITS_30_DAYS} commits, considering a {margin_percentage}% margin. :x:\n" nloc = get_lines_of_code(owner, repository) if nloc == -1: - return "The repository does not exist. ❌" + return "The repository does not exist. :x:" if nloc >= LIMIT_NLOC: - res += f"The repository has over {LIMIT_NLOC} lines of code. ✅\n" + res += f"The repository has at least {LIMIT_NLOC} lines of code. :white_check_mark:\n" elif nloc >= LIMIT_NLOC * (1 - MARGIN): - res += f"The repository has {nloc} lines of code, which is close to the limit of {LIMIT_NLOC} lines of code, considering a {margin_percentage}% margin. ⭕\n" + res += f"The repository has {nloc} lines of code, which is close to the limit of {LIMIT_NLOC} lines of code, considering a {margin_percentage}% margin. :warning:\n" else: - res += f"The repository has {nloc} lines of code, which is way below the limit of {LIMIT_NLOC} lines of code, considering a {margin_percentage}% margin. ❌\n" - + res += f"The repository has {nloc} lines of code, which is way below the limit of {LIMIT_NLOC} lines of code, considering a {margin_percentage}% margin. :x:\n" + res += "\n" - if any([stars < LIMIT_STARS * (1 - MARGIN), commits_30_days < LIMIT_COMMITS_30_DAYS * (1 - MARGIN), nloc < LIMIT_NLOC * (1 - MARGIN)]): - res += f"The repository {owner}/{repository} is not PICable. There are some requirements that are way below the requested limits. ❌\n" + if any( + [ + stars < LIMIT_STARS * (1 - MARGIN), + commits_30_days < LIMIT_COMMITS_30_DAYS * (1 - MARGIN), + nloc < LIMIT_NLOC * (1 - MARGIN), + ] + ): + res += f"The repository {owner}/{repository} is not PICable. There are some requirements that are way below the requested limits. :x:\n" elif all([stars >= LIMIT_STARS, commits_30_days >= LIMIT_COMMITS_30_DAYS, nloc >= LIMIT_NLOC]): - res += f"The repository {owner}/{repository} is PICable. ✅\n" + res += f"The repository {owner}/{repository} is PICable. :white_check_mark:\n" else: - res += f"The repository {owner}/{repository} is almost PICable. There are certain requirements which are almost met by this repository. Consult with a professor before proceeding. ⭕\n" + res += f"The repository {owner}/{repository} is almost PICable. There are certain requirements which are almost met by this repository. Consult with a professor before proceeding. :warning:\n" - return res \ No newline at end of file + return res