update-firmware.sh 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash
  2. set -Exeuo pipefail
  3. print_status() {
  4. local level="$1"
  5. local body="${2//%/%25}"
  6. body="${body//$'\r'/}"
  7. body="${body//$'\n'/%0A}"
  8. echo "::$level::$body"
  9. }
  10. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd -P)"
  11. FIRMWARE_VER="$1"
  12. pushd "$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel)"
  13. print_status notice "updating to firmware $FIRMWARE_VER"
  14. # setup git
  15. git config --local user.name $GIT_USER_NAME
  16. git config --local user.email $GIT_USER_EMAIL
  17. # construct a new version number for the qrcode app
  18. VER="$(git tag | sed -E -e '/^v[0-9]+\.[0-9]+\.[0-9]+$/!d' | sort -V | tail -n1)"
  19. if [[ "$VER" =~ ^(v[0-9]+.[0-9]+).([0-9]+)$ ]]; then
  20. VER="${BASH_REMATCH[1]}.$(( ${BASH_REMATCH[2]} + 1 ))"
  21. else
  22. print_status warning "couldn't construct new version number from $VER"
  23. exit 1
  24. fi
  25. print_status notice "new qrcode version: $VER"
  26. # update firmware version in automation
  27. sed -i -e "/firmware_version:/s/'.*'/'$FIRMWARE_VER'/" .github/workflows/release.yml
  28. # commit and tag
  29. git add .github/workflows/release.yml
  30. git commit -m "update to firmware $FIRMWARE_VER"
  31. git tag -a -m "$VER" "$VER"
  32. git tag "firmware-v$FIRMWARE_VER"
  33. git push --atomic origin main "$VER" "firmware-v$FIRMWARE_VER"
  34. popd