109 lines
3.3 KiB
Python
109 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 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()
|