nodiscc
6 years ago
1 changed files with 60 additions and 0 deletions
@ -0,0 +1,60 @@ |
|||
#!/usr/bin/env python3 |
|||
|
|||
""" A script to find github repo links and last commit dates in a markdown file |
|||
|
|||
Requirements: |
|||
- python3 github module (sudo apt install python3-github on Debian) |
|||
- A personal access token (https://github.com/settings/tokens) |
|||
|
|||
Usage: |
|||
- Run awesome_bot --allow-redirect -f README.md beforehand to detect any error(4xx, 5xx) that would |
|||
cause the script to abort |
|||
- Github API calls are limited to 5000 requests/hour https://developer.github.com/v3/#rate-limiting |
|||
- Put the token in your environment variables: |
|||
export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4 |
|||
- The output is unsorted, just pipe it through 'sort' or paste it in your editor and sort from there |
|||
- Put the script in your crontab or run it from time to time. It doesn't make sense to add this |
|||
script to the CI job that runs every time something is pushed. |
|||
- To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at |
|||
with updated_at |
|||
|
|||
""" |
|||
|
|||
from github import Github |
|||
import sys |
|||
import time |
|||
import re |
|||
import os |
|||
|
|||
__author__ = "nodiscc" |
|||
__copyright__ = "Copyright 2019, nodiscc" |
|||
__credits__ = ["https://github.com/kickball/awesome-selfhosted"] |
|||
__license__ = "MIT" |
|||
__version__ = "1.0" |
|||
__maintainer__ = "nodiscc" |
|||
__email__ = "nodiscc@gmail.com" |
|||
__status__ = "Production" |
|||
|
|||
############################################################################### |
|||
|
|||
access_token = os.environ['GITHUB_TOKEN'] |
|||
|
|||
""" find all URLs of the form https://github.com/owner/repo """ |
|||
with open('README.md', 'r') as readme: |
|||
data = readme.read() |
|||
project_urls = re.findall('https://github.com/[A-z]*/[A-z|0-9|\-|_|\.]+', data) |
|||
|
|||
urls = sorted(set(project_urls)) |
|||
|
|||
""" Uncomment this to debug the list of matched URLs """ |
|||
# print(str(urls)) |
|||
# exit(0) |
|||
|
|||
""" login to github API """ |
|||
g = Github(access_token) |
|||
|
|||
""" load project metadata, output last commit date and URL """ |
|||
for url in urls: |
|||
project = re.sub('https://github.com/', '', url) |
|||
repo = g.get_repo(project) |
|||
print(str(repo.pushed_at) + ' https://github.com/' + project) |
Loading…
Reference in new issue