f62d32157a
Reimplemented as a util script with std lib only. Decision to add dependencies moved elsewhere. This script should be able to stand alone. Add some docu on how to use compile.py
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
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()
|