MicroPython_TravisCI_Deploy/build_release.sh
2016-12-15 15:07:51 -08:00

36 lines
1.4 KiB
Bash
Executable file

#!/bin/bash
function build_mpy() {
SOURCE_PY=$(echo "$1" | sed 's/.mpy/.py/')
echo "Generating .mpy for: $SOURCE_PY"
mpy-cross "$SOURCE_PY"
# For local testing, uncomment to just copy .py to .mpy files:
#cp "$SOURCE_PY" "${SOURCE_PY%%.py}.mpy"
}
function build_package() {
# Strip off .zip from the final output name to find the directory with source.
SOURCE_DIR=$(echo "$1" | sed 's/.zip//')
echo "Building package for folder: $SOURCE_DIR"
# Walk all the files and run mpy-cross on them.
# NOTE: The __init__.py files will be ignored and not compiled because of this
# issue with .mpy version of init file:
# https://github.com/micropython/micropython/issues/2680
find $SOURCE_DIR -name '*.py' -and ! -name '__init__.py' | while read -r file ; do
build_mpy "$file"
done
# Zip all the .mpy and __init__.py files:
zip -r "$1" "$SOURCE_DIR" -i '*.mpy' '*/__init__.py'
}
# Main logic, loop through all the files listed in the release deployment of
# the travis config. For every .zip file assume there's a package to generate,
# and for every .mpy file assume it's just a simple .py source file.
shyaml get-values deploy.file < .travis.yml | while read -r file ; do
if [[ $file == *.zip ]] ; then
build_package "$file"
elif [[ $file == *.mpy ]] ; then
build_mpy "$file"
else
echo "Ignoring unknown deployment file type: $file"
fi
done