# 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: print("You can use the next commands after check.py") print() print(" -links | Will skip checking the links") print() print(" --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()