Add script to show missing/hidden boards

This commit is contained in:
Melissa LeBlanc-Williams 2023-11-15 10:09:30 -08:00
parent 3345f29b54
commit 97c295cb23
2 changed files with 88 additions and 24 deletions

View file

@ -1,4 +1,5 @@
#!/usr/bin/python3
import os
import json
import re
from pathlib import Path
@ -10,9 +11,12 @@ with open('template.md', "rt") as f:
metadata, content = frontmatter.parse(f.read())
acceptable_features = set(metadata['features'])
def get_files(folder):
return sorted(Path(folder).glob("*.md"), key=os.path.basename)
def verify_board_id(folder):
valid = True
for filename in Path(folder).glob("*.md"):
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')
@ -38,7 +42,7 @@ def valid_date(date):
def verify_features(folder, valid_features):
valid = True
for filename in Path(folder).glob("*.md"):
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')
@ -54,30 +58,29 @@ def verify_features(folder, valid_features):
def verify_family(folder):
valid = True
bl_file = open('./_data/bootloaders.json')
bootloaders = json.load(bl_file)
valid_bootloaders = bootloaders["bootloaders"].keys()
for filename in Path(folder).glob("*.md"):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')
if downloads_display is None or downloads_display:
board_id = metadata.get('board_id') or ()
if board_id == "unknown":
continue
family = metadata.get('family')
if family is None:
print(f"Family field is missing for {board_id}")
valid = False
elif family not in valid_bootloaders:
print(f"Family field value of {family} for {board_id} is invalid.")
valid = False
bl_file.close()
with open('./_data/bootloaders.json') as bl_file:
bootloaders = json.load(bl_file)
valid_bootloaders = bootloaders["bootloaders"].keys()
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')
if downloads_display is None or downloads_display:
board_id = metadata.get('board_id') or ()
if board_id == "unknown":
continue
family = metadata.get('family')
if family is None:
print(f"Family field is missing for {board_id}")
valid = False
elif family not in valid_bootloaders:
print(f"Family field value of {family} for {board_id} is invalid.")
valid = False
return valid
def verify_date_added(folder):
valid = True
for filename in Path(folder).glob("*.md"):
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')
@ -97,7 +100,7 @@ def verify_date_added(folder):
def verify_contribute_not_present(folder):
valid = True
contribute = re.compile(r".*\n## Contribute", re.MULTILINE | re.DOTALL)
for filename in Path(folder).glob("*.md"):
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, content = frontmatter.parse(f.read())
board_id = metadata.get('board_id') or ()
@ -109,7 +112,7 @@ def verify_contribute_not_present(folder):
def verify_blinka_board(folder):
# Check that blinka flag is set for all boards in the folder
valid = True
for filename in Path(folder).glob("*.md"):
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')

61
missing-boards.py Executable file
View file

@ -0,0 +1,61 @@
#!/usr/bin/python3
# Print a list of hidden and missing boards
import os
import json
from pathlib import Path
import frontmatter
def get_files(folder):
return sorted(Path(folder).glob("*.md"), key=os.path.basename)
def find_hidden_boards(folder):
hidden_boards = []
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
downloads_display = metadata.get('downloads_display')
if downloads_display is not None and not downloads_display:
board_id = metadata.get('board_id')
if board_id == "unknown":
continue
hidden_boards.append(board_id)
print("Hidden boards:")
print("----------------")
if hidden_boards:
print("\n".join(hidden_boards))
else:
print("No Hidden Boards")
def find_missing_boards(folder):
missing_boards = []
# Add all board ids to a list from data file
with open('./_data/files.json') as board_file:
boards = json.load(board_file)
for board in boards:
if not os.path.exists(f"./_boards/{board}.md"):
missing_boards.append(board["id"])
# Scan through files and remove board_ids from list
for filename in get_files(folder):
with open(filename, "rt") as f:
metadata, _ = frontmatter.parse(f.read())
board_id = metadata.get('board_id')
if board_id == "unknown":
continue
if board_id in missing_boards:
missing_boards.remove(board_id)
# Print out remaining board_ids
print("")
print("Missing boards:")
print("----------------")
if missing_boards:
print("\n".join(missing_boards))
else:
print("No Missing Boards")
find_hidden_boards("_board")
find_missing_boards("_board")