circuitpython/tools/travis_new_boards_check.py

52 lines
1.5 KiB
Python

#! /usr/bin/env python3
import sys
import os
import json
import build_board_info
# Get boards in json format
boards_info_json = build_board_info.get_board_mapping()
# Get all the boards out of the json format
info_boards = [board for board in boards_info_json.keys() if not boards_info_json[board].get("alias", False)]
# We need to know the path of the .travis.yml file
base_path = os.path.dirname(__file__)
travis_path = os.path.abspath(os.path.join(base_path, '..', '.travis.yml'))
# Loading board list based on TRAVIS_BOARDS env variable on .travis.yml
travis_boards = []
with open(travis_path, 'r') as travis:
# Get all lines that contain the substring 'TRAVIS_BOARDS'
for line in travis:
# Get the lines with TRAVIS_BOARDS= in it
if line.find('TRAVIS_BOARDS=') is not -1:
# Store all the boards names into travis_boards
begin_of_names = line.find('TRAVIS_BOARDS=') + len('TRAVIS_BOARDS=') + 1
end_of_names = line.rfind('"')
boards = line[begin_of_names:end_of_names]
boards = boards.split(' ')
travis_boards.extend(boards)
# We've reached the end of the env: section
elif 'addons' in line:
break
else:
pass
# All the travis_boards elements must be on info_boards
info_boards.sort()
travis_boards.sort()
missing_boards = set(info_boards) - set(travis_boards)
if missing_boards:
print('Boards missing in TRAVIS_BOARDS:')
for board in missing_boards:
print(board)
sys.exit(1)