Don't hardcode filename
This commit is contained in:
parent
5233c9bdd7
commit
40ca5ba486
2 changed files with 69 additions and 49 deletions
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
Loading…
Reference in a new issue