Skip to content

Instantly share code, notes, and snippets.

@brosner
Last active July 21, 2016 19:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brosner/47f40c59d4632ae88d9270e5f1aba647 to your computer and use it in GitHub Desktop.
Save brosner/47f40c59d4632ae88d9270e5f1aba647 to your computer and use it in GitHub Desktop.
Pinax distribution release check
import functools
import sys
import github3
import semver
distro_repos = set([
"django-user-accounts",
"pinax-announcements",
"pinax-blog",
"pinax-calendars",
"pinax-documents",
"pinax-eventlog",
"pinax-images",
"pinax-invitations",
"pinax-likes",
"pinax-messages",
"pinax-notifications",
"pinax-stripe",
"pinax-testimonials",
"pinax-types",
"pinax-webanalytics",
"pinax-waitinglist"
])
gh = github3.login(sys.argv[1], token=sys.argv[2].strip())
pinax = gh.organization("pinax")
for repo in pinax.repositories():
if repo.name in distro_repos:
tags = list(repo.tags())
versions = {}
for tag in tags:
if tag.name.startswith("v"):
tag_name = tag.name[1:]
else:
tag_name = tag.name
try:
semver.parse(tag_name)
except ValueError:
continue
versions[tag_name] = tag
if len(versions) == 0:
continue
version = sorted(versions.keys(), reverse=True, key=functools.cmp_to_key(semver.compare))[0]
tagged_sha = versions[version].commit["sha"]
tagged_commit = repo.commit(tagged_sha)
since = [
commit
for commit in list(repo.commits(sha="master", since=tagged_commit.commit.author["date"]))
if commit.sha != tagged_sha
]
since_count = len(since)
if since_count > 0:
print("{!s}".format(repo))
print(" {!s} ({!s} newer commit{!s})".format(version, since_count, "s" if since_count > 1 else ""))
github3.py==1.0.0a4
semver==2.6.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment