mirror of
https://github.com/Electrostatics/apbs.git
synced 2026-06-04 20:54:22 +08:00
184 lines
4.4 KiB
Python
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)
|