Files
apbs/tools/github/release-data.py

184 lines
4.4 KiB
Python

from urllib import urlopen
import json
from optparse import OptionParser
# from pprint import pprint
import codecs
codecs.register(
lambda name: codecs.lookup("utf-8") if name == "cp65001" else None
)
"""was using this to see what I had currently, could be useful later"""
parser = OptionParser()
parser.add_option(
"-l",
"--list",
dest="list",
action="store_true",
default=False,
help="list available releases",
)
parser.add_option(
"--linux",
dest="linux",
action="store_true",
default=False,
help="find the linux release data",
)
parser.add_option(
"--osx",
dest="osx",
action="store_true",
default=False,
help="find the osx release data",
)
parser.add_option(
"--windows",
dest="windows",
action="store_true",
default=False,
help="find the windows release data",
)
parser.add_option(
"--src",
dest="src",
action="store_true",
default=False,
help="find the src release data",
)
parser.add_option(
"-a",
"--all",
dest="all",
action="store_true",
default=True,
help="find all release data (default)",
)
parser.add_option(
"--pdb2pqr-2.0.0",
dest="pdb2pqr-2.0.0",
action="store_true",
default=False,
help="find the pdb2pqr 2.0.0 release data",
)
parser.add_option(
"--pdb2pqr-1.9.0",
dest="pdb2pqr-1.9.0",
action="store_true",
default=False,
help="find the pdb2pqr 1.9.0 release data",
)
(options, args) = parser.parse_args()
os_version = ["linux", "osx", "src", "windows"]
version_num = ["pdb2pqr-2.0.0", "pdb2pqr-1.9.0"]
data = urlopen(
"https://api.github.com/repos/Electrostatics/apbs-pdb2pqr/releases"
)
html = data.read()
listofreleases = json.loads(html)
# determines if options other than all are selected
counter = 0
for thing in os_version:
if getattr(options, thing) is True or options.list is True:
counter += 1
if counter > 0:
options.all = False
os = []
release_number = []
for version in version_num:
if getattr(options, version):
a = version.split("-")
os.append(a[0])
release_number.append(a[1])
b = set(os)
c = set(release_number)
bool2 = False
if len(b) == 0:
if len(c) == 0:
for version in version_num:
a = version.split("-")
os.append(a[0])
release_number.append(a[1])
b = set(os)
c = set(release_number)
bool2 = True
elif len(c) != 0:
bool2 = False
bool1 = True
# main code body, iterates over the command line inputs
for thing in os_version:
# print getattr(options, thing) == True
if getattr(options, thing) is True:
print("\n \n" + thing.upper() + " RELEASES")
for number in listofreleases:
releasename = number.get("name")
listofassets = number.get("assets")
print("\n" + releasename)
print(number.get("created_at") + "\n")
for info in listofassets:
for d in b:
for e in c:
if d and e in info.get("name"):
if thing in info.get("name"):
print(info.get("name"))
count = info.get("download_count")
print(f"Download Count = {count}")
continue
else:
if bool2 is True:
continue
else:
print("No releases here")
bool1 = False
break
break
if bool1 is False:
bool1 = True
break
# the else case, prints all releases
if options.all is True:
print("\n \n" + "ALL RELEASES")
for number in listofreleases:
releasename = number.get("name")
print("\n" + releasename)
listofassets = number.get("assets")
print(number.get("created_at") + "\n")
for info in listofassets:
print(info.get("name"))
count = info.get("download_count")
print("Download Count = " + str(count))
# lists releases available
if options.list is True:
print("\n" + "RELEASES LIST")
for number in listofreleases:
releasename = number.get("name")
print("\n" + releasename)