gen_version.sh 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. #!/bin/sh
  2. # gen_version.sh -- write OpenPuck/git_version.h with the release/build identity shown in WebUSB.
  3. # Keep both semver + hash so local untagged builds still expose provenance.
  4. # Run this BEFORE `arduino-cli compile`. The generated header is git-ignored, so generating it never itself
  5. # marks the tree dirty.
  6. set -e
  7. cd "$(dirname "$0")"
  8. HASH=$(git rev-parse --short=8 HEAD 2>/dev/null || echo unknown)
  9. VERSION="${OPK_BUILD_VERSION:-}"
  10. if [ -z "$VERSION" ]; then
  11. VERSION="$(
  12. git tag --points-at HEAD 2>/dev/null \
  13. | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \
  14. | sort -V \
  15. | tail -n1 || true
  16. )"
  17. fi
  18. # Dirty = any tracked change OR untracked file (porcelain is empty only on a clean tree). git_version.h is
  19. # git-ignored so it doesn't count.
  20. if [ -z "$(git status --porcelain 2>/dev/null)" ]; then DIRTY=0; else DIRTY=1; fi
  21. cat > OpenPuck/git_version.h <<EOF
  22. // AUTO-GENERATED by gen_version.sh -- do not edit, do not commit (git-ignored).
  23. #pragma once
  24. #define OPK_BUILD_VERSION "$VERSION"
  25. #define OPK_GIT_HASH "$HASH"
  26. #define OPK_GIT_DIRTY $DIRTY
  27. EOF
  28. echo "OpenPuck/git_version.h: version=${VERSION:-none} hash=$HASH dirty=$DIRTY"