kmk_firmware/util/compile.py

43 lines
1.0 KiB
Python
Raw Permalink Normal View History

import shutil
import subprocess
from os import devnull, system
from pathlib import Path
source_dir = Path('kmk')
build_dir = Path('build')
def clean():
build_dir.mkdir(exist_ok=True)
for child in build_dir.iterdir():
if child.is_file():
child.unlink()
else:
shutil.rmtree(child)
def compile():
shutil.copy2('boot.py', 'build/boot.py')
# Make sure the full folder heirarchy exists
for d in source_dir.glob('**/'):
if not build_dir.joinpath(d).exists():
Path.mkdir(build_dir.joinpath(d))
# Compile every python file
for x in source_dir.glob('**/*.py'):
out_path = str(build_dir.joinpath(x).with_suffix('.mpy'))
system(f'mpy-cross {x} -o {out_path}')
if __name__ == '__main__':
try:
subprocess.run('mpy-cross', stdout=devnull, stderr=devnull)
except (FileNotFoundError):
print()
print('`mpy-cross` not found. Ensure mpy-cross is working from a shell.')
print()
clean()
compile()