in members_check.py [0:0]
def main(failOnWarn=False):
member_info = requests.get(MEMBER_INFO).json()
members = member_info['members']
ex_members = member_info['ex_members']
errors = 0
warnings = 0
with open(MEMBERS_MD, 'r', encoding='utf-8') as md:
section = None
for line in md:
if line.startswith('| Id | Name | Projects |'):
section = 'members'
print("Checking members section")
continue
elif line.startswith('| Id | Name |'):
section = 'emeritus'
print("Checking emeritus section")
continue
elif len(line.strip()) == 0:
section = None
continue
elif line.startswith('|---'):
continue
if section is None:
continue
if not line.startswith('| '):
print("Unexpected format:")
print(line.strip())
errors += 1
parts = line.strip().split('|')
parts.pop(0)
availid = parts.pop(0).strip()
name = parts.pop(0).strip()
if section == 'members':
if not availid in members:
level = ''
if availid in ex_members:
status = f"is listed in Whimsy with status '{ex_members.get(availid)}'"
warnings += 1
level = 'WARNING'
else:
status = "was not found in Whimsy"
errors += 1
level = 'ERROR'
print(f"{level}: '{availid}' ({name}) is listed in the 'members' section of `content/foundation/members.md`, but {status}")
elif section == 'emeritus':
if availid != '?' and not availid in ex_members:
if availid in members:
status = "is listed in Whimsy as an ASF Member"
warnings += 1
level = 'WARNING'
else:
status = "was not found in Whimsy"
errors += 1
level = 'ERROR'
print(f"{level}: '{availid}' ({name}) is listed in the 'emeritus' section of `content/foundation/members.md`, but {status}")
print(f"Detected {errors} error(s) and {warnings} warnings. ")
if errors > 0:
print("Errors detected, failing")
sys.exit(1)
elif warnings > 0:
if failOnWarn:
print("Warnings detected, failing")
sys.exit(1)
else:
print("Warnings detected")
else:
print("No errors or warnings detected")