Don't hardcode filename

This commit is contained in:
Melissa LeBlanc-Williams 2023-03-13 14:47:31 -07:00
parent 5233c9bdd7
commit 40ca5ba486
2 changed files with 69 additions and 49 deletions

View file

@ -50,13 +50,15 @@ jobs:
run: python3 check-boards.py
- name: Check Image Dimensions
run: python3 check-images.py
- name: Make Directory For Report Files
run: mkdir -p bin/json
- name: Generate ESP32 Boards JSON
run: python3 generate-board-info.py
run: python3 generate-board-info.py -o bin/json/esp32_boards.json
- name: Upload ESP32 Boards JSON To AWS S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp esp32_boards.json s3://adafruit-circuit-python/esp32_boards.json --no-progress --region us-east-1"
run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp bin/json/esp32_boards.json s3://adafruit-circuit-python/esp32_boards.json --no-progress --region us-east-1"
- name: Build site with jekyll
run: |
bundle exec jekyll build -d build

View file

@ -2,61 +2,79 @@
import json
from pathlib import Path
import frontmatter
import argparse
INCLUDED_CHIP_FAMILIES = ("esp32s2", "esp32s3", "esp32c3", "esp32")
BOOTLOADER_URL_PREFIX = "https://adafruit-circuit-python.s3.amazonaws.com/bootloaders/esp32/"
DOWNLOAD_URL_PREFIX = "https://adafruit-circuit-python.s3.amazonaws.com/bin/"
OUTPUT_FILENAME = 'esp32_boards.json'
# Get CircuitPython Bootloader Info
with open('./_data/bootloaders.json', "rt") as f:
bootloaders = json.load(f)
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"-o", "--output",
help="Output filename. If not specified, output will just print to screen.",
type=str,
)
with open('./_data/files.json', "rt") as f:
board_info = json.load(f)
args = parser.parse_args()
def get_releases(board_id):
releases = []
for board in board_info:
if board_id in board["id"]:
for board_releases in board["versions"]:
release = {}
release["version"] = board_releases["version"]
for extension in board_releases["extensions"]:
release[f'{extension}file'] = f'{DOWNLOAD_URL_PREFIX}/{board_id}/en_US/adafruit-circuitpython-{board_id}-en_US-{release["version"]}.{extension}'
releases.append(release)
break
return releases
# Get CircuitPython Bootloader Info
with open('./_data/bootloaders.json', "rt") as f:
bootloaders = json.load(f)
def get_bootloader(chipfamily, bootloader_id):
if chipfamily in bootloaders and "version" in bootloaders[chipfamily]:
bootloader_version = bootloaders[chipfamily]["version"]
return f"{BOOTLOADER_URL_PREFIX}tinyuf2-{bootloader_id}-{bootloader_version}.zip"
return None
with open('./_data/files.json', "rt") as f:
board_info = json.load(f)
def generate_boards(folder):
boards = {}
for filename in Path(folder).glob("*.md"):
board = {}
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
board["name"] = metadata.get('name')
board["chipfamily"] = metadata.get('family')
if board["chipfamily"] not in INCLUDED_CHIP_FAMILIES:
continue
bootloader_id = metadata.get('bootloader_id')
if board["chipfamily"] and bootloader_id:
board["bootloader"] = get_bootloader(board["chipfamily"], bootloader_id)
board["releases"] = get_releases(board_id)
boards[board_id] = board
return boards
def get_releases(board_id):
releases = []
for board in board_info:
if board_id in board["id"]:
for board_releases in board["versions"]:
release = {}
release["version"] = board_releases["version"]
for extension in board_releases["extensions"]:
release[f'{extension}file'] = f'{DOWNLOAD_URL_PREFIX}/{board_id}/en_US/adafruit-circuitpython-{board_id}-en_US-{release["version"]}.{extension}'
releases.append(release)
break
return releases
boards = generate_boards("_board")
def get_bootloader(chipfamily, bootloader_id):
if chipfamily in bootloaders and "version" in bootloaders[chipfamily]:
bootloader_version = bootloaders[chipfamily]["version"]
return f"{BOOTLOADER_URL_PREFIX}tinyuf2-{bootloader_id}-{bootloader_version}.zip"
return None
with open(OUTPUT_FILENAME, "wt") as f:
json.dump(boards, f, indent=4)
def generate_boards(folder):
boards = {}
for filename in Path(folder).glob("*.md"):
board = {}
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
board["name"] = metadata.get('name')
board["chipfamily"] = metadata.get('family')
if board["chipfamily"] not in INCLUDED_CHIP_FAMILIES:
continue
bootloader_id = metadata.get('bootloader_id')
if board["chipfamily"] and bootloader_id:
board["bootloader"] = get_bootloader(board["chipfamily"], bootloader_id)
board["releases"] = get_releases(board_id)
boards[board_id] = board
print(f"Added {board_id}")
return boards
boards = generate_boards("_board")
if args.output:
with open(args.output, "wt") as f:
json.dump(boards, f, indent=4)
print (f"Wrote {args.output}")
else:
print(json.dumps(boards, indent=4))
if __name__ == "__main__":
main()