FreeCompetitors/check.py
2022-04-14 12:06:34 -05:00

117 lines
3.3 KiB
Python

# THIS SOFTWARE IS A PART OF FREE COMPETITOR PROJECT
# THE FOLLOWING SOURCE CODE I UNDER THE GNU
# AGPL LICENSE V3 OR ANY LATER VERSION.
# This project is not for simple users, but for
# web-masters and a like, so we are counting on
# your ability to set it up and running.
import os
import sys
import json
from modules import missing
args = sys.argv
if "--help" in args or "-h" in args:
print("""You can use the next commands after check.py
-links | Will skip checking the links
--help | Displays this help menu""")
exit()
# TODO: Make a pull-request before starting
print("* Checking...")
# Check number one, list all missing software
try:
with open("data/missing.json") as json_file:
miss = json.load(json_file)
except:
miss = {}
if miss:
print()
print("* Missing Software found! Please copy-paste the next")
print(" section into our Missing Software Mega-Thread at: ")
print(" https://notabug.org/jyamihud/FreeCompetitors/issues/25")
print("===========================================================")
print()
missing.List()
if miss:
print()
print("===========================================================")
print()
# Part two. Checking for healthy links
import urllib.request
import urllib.error
error = False
def iferror():
if not error:
print()
print(" * Some files in 'apps' folder have problems! Please")
print(" copy-paste the next section into our Problems with")
print(" Software Mega-Thread at: ")
print(" https://notabug.org/jyamihud/FreeCompetitors/issues/24")
print("===========================================================")
print()
return True
for f in os.listdir("apps"):
if f.endswith(".json"):
# Trying to read the file
try:
with open("apps/"+f) as json_file:
app = json.load(json_file)
except Exception as e:
error = iferror()
print(" - [ ] `apps/"+f+"` fails to load. Says: `"+str(e)+"`")
continue
# Links
if not "-links" in args:
for link in app.get("links",[]):
# TODO: Make the tester of the links closer to the kind
# of response that you will get in the web-browser.
try:
urllib.request.urlopen(app.get("links",[])[link])
except Exception as e:
if "403" not in str(e):
error = iferror()
print(" - [ ] `apps/"+f+"` "+link+" link doesn't seem to work.")
# Licenses
lices = app.get("licenses", [])
try:
with open("data/licenses.json") as json_file:
ll = json.load(json_file)["licenses"]
except:
ll = {}
for lic in lices:
found = False
for l in ll:
if lic in [l.get("licenseId",""),l.get("name","")]:
found = True
if not found:
error = iferror()
print(" - [ ] `apps/"+f+"` License '"+lic+"' is unknown.")
print()
print("===========================================================")
print()
print("* Check is finished!")
print()