version.sh 978 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/sh
  2. git --version &>/dev/null || exit
  3. curr_dir=$(pwd)
  4. src_top_dir=
  5. [ -d ${curr_dir}/.git ] && {
  6. src_top_dir=${curr_dir}
  7. } || {
  8. curr_dir=$(dirname ${curr_dir})
  9. [ -d ${curr_dir}/.git ] && {
  10. src_top_dir=${curr_dir}
  11. } || {
  12. [ -z "$1" ] && exit
  13. src_top_dir=$1
  14. }
  15. }
  16. [ -z "${src_top_dir}" ] && exit
  17. VERSION_FILE=${src_top_dir}/version.h
  18. pushd ${src_top_dir} &>/dev/null
  19. git_head=$(git rev-parse --verify HEAD 2>/dev/null)
  20. [ -z "${git_head}" ] && exit
  21. new_version="$(git describe 2>/dev/null)"
  22. [ -z "${new_version}" ] && exit
  23. popd &>/dev/null
  24. saved_version=
  25. [ -r ${VERSION_FILE} ] && {
  26. saved_version=$(grep '^#define MC_CURRENT_VERSION' ${VERSION_FILE}| sed -r 's/.*"(.*)"$/\1/')
  27. }
  28. [ -z "${saved_version}" -o "${saved_version}" != "${new_version}" ] && {
  29. cat >${VERSION_FILE} <<EOF
  30. #ifndef MC_CURRENT_VERSION
  31. /* This is autogenerated file. Don't edit! */
  32. #define MC_CURRENT_VERSION "${new_version}"
  33. #endif
  34. EOF
  35. }
  36. exit 0