#!/usr/bin/env bash #set -x set -e if ! git diff-index --quiet HEAD ; then echo "Git isn't clean. Cant deploy." exit 1 fi branch_name=$(git symbolic-ref -q HEAD) branch_name=${branch_name##refs/heads/} branch_name=${branch_name:-HEAD} if [ "$branch_name" != "master" ]; then echo "We are not on master branch. Can't deploy." exit 1 fi echo echo echo "Last tags:" vers=`git tag --sort=-version:refname | head -n 5` while read version; do echo " $version" done <<< "$vers" read -p "Version to generate: " VERSION OTA_VERSION=`grep "VERSION=" bin/update.manifest | cut -d"=" -f2` OTA_VERSION=$(( $OTA_VERSION + 1 )) sed -i.bak "s/#define OTA_VERSION .*/#define OTA_VERSION $OTA_VERSION/" include/config.h include/config.sample.h rm include/config.h.bak include/config.sample.h.bak PLATFORMIO_BUILD_FLAGS='-DVERSION=\"$VERSION\"' pio run -e deploy -t buildprog || exit 1 cp .pio/build/deploy/firmware.bin bin/firmware.bin || exit 1 sed -i.bak "s/VERSION=.*/VERSION=$OTA_VERSION/" bin/update.manifest MD5=`md5sum --binary bin/firmware.bin | cut -d" " -f1` sed -i.bak "s/IMAGE_MD5=.*/IMAGE_MD5=$MD5/" bin/update.manifest rm bin/update.manifest.bak echo; echo; echo; echo; echo echo "Please check the git diff, if everything looks okay:" git diff read -p "Press ENTER to continue, Ctrl-C to abort. " foo git add bin/firmware.bin bin/update.manifest git commit -m "Deploying version $VERSION." git tag -a -m "Deploying version $VERSION" $VERSION git push --follow-tags