# 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 json # 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: missing = json.load(json_file) except: missing = {} if missing: 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() # TODO: Make it check if the items in the missing.json already added # in the last pull-request, or manually by the operator. If they # are found. Remove them from the file. And from the list. for i in missing: name = i[0].upper()+i[1:].lower() print(' - [ ] '+name+' *Searched at least '+str(missing[i]) +" times.*") if missing: 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 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("* Check is finished!") print()