|
|
- #!/bin/bash
-
- # Welcome
- echo "--------------------------------------------------------------"
- echo "ESPURNA FIRMWARE BUILDER"
-
- # Available environments
- travis=$(grep env: platformio.ini | grep travis | sed 's/\[env://' | sed 's/\]/ /' | sort)
- available=$(grep env: platformio.ini | grep -v ota | grep -v ssl | grep -v travis | sed 's/\[env://' | sed 's/\]/ /' | sort)
-
- # Parameters
- while getopts "lp" opt; do
- case $opt in
- l)
- echo "--------------------------------------------------------------"
- echo "Available environments:"
- for environment in $available; do
- echo "* $environment"
- done
- exit
- ;;
- p)
- par_build=1
- par_thread=${BUILDER_THREAD:-0}
- par_total_threads=${BUILDER_TOTAL_THREADS:-4}
- if [ ${par_thread} -ne ${par_thread} -o \
- ${par_total_threads} -ne ${par_total_threads} ]; then
- echo "Parallel threads should be a number."
- exit
- fi
- if [ ${par_thread} -ge ${par_total_threads} ]; then
- echo "Current thread is greater than total threads. Doesn't make sense"
- exit
- fi
- ;;
- esac
- done
-
- shift $((OPTIND-1))
-
- environments=$@
-
- # Environments to build
- if [ $# -eq 0 ]; then
-
- environments=$available
-
- # Hook to build travis test envs
- if [[ "${TRAVIS_BRANCH}" != "" ]]; then
- re='^[0-9]+\.[0-9]+\.[0-9]+$'
- if ! [[ ${TRAVIS_BRANCH} =~ $re ]]; then
- environments=$travis
- fi
- fi
-
- fi
-
- # Get current version
- version=$(grep APP_VERSION espurna/config/version.h | awk '{print $3}' | sed 's/"//g')
- echo "Building for version $version"
-
- # Create output folder
- mkdir -p firmware
-
- if [ ! -e node_modules/gulp/bin/gulp.js ]; then
- echo "--------------------------------------------------------------"
- echo "Installing dependencies..."
- npm install --only=dev
- fi
-
- echo "--------------------------------------------------------------"
- echo "Get revision..."
- revision=$(git rev-parse HEAD)
- revision=${revision:0:7}
- cp espurna/config/version.h espurna/config/version.h.original
- sed -i -e "s/APP_REVISION \".*\"/APP_REVISION \"$revision\"/g" espurna/config/version.h
-
- # Recreate web interface
- echo "--------------------------------------------------------------"
- echo "Building web interface..."
- node node_modules/gulp/bin/gulp.js || exit
-
- # Build all the required firmware images
- echo "--------------------------------------------------------------"
- echo "Building firmware images..."
- mkdir -p ../firmware/espurna-$version
- if [ ${par_build} ]; then
- to_build=$(echo ${environments} | awk -v par_thread=${par_thread} -v par_total_threads=${par_total_threads} '{ for (i = 1; i <= NF; i++) if (++j % par_total_threads == par_thread ) print $i; }')
- else
- to_build=${environments}
- fi
-
- for environment in $to_build; do
- echo -n "* espurna-$version-$environment.bin --- "
- platformio run --silent --environment $environment || exit 1
- stat -c %s .pioenvs/$environment/firmware.bin
- mv .pioenvs/$environment/firmware.bin ../firmware/espurna-$version/espurna-$version-$environment.bin
- done
- echo "--------------------------------------------------------------"
-
- mv espurna/config/version.h.original espurna/config/version.h
|