1
0

files.bash 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/env bash
  2. set -e
  3. usage='usage: files.bash [<options>] [--]
  4. Options:
  5. --version <ver> CMake <major>.<minor> version number to push.
  6. Defaults to version of source tree.
  7. '
  8. die() {
  9. echo "$@" 1>&2; exit 1
  10. }
  11. readonly cmake_source_dir="${BASH_SOURCE%/*}/../.."
  12. cmake_version_component()
  13. {
  14. sed -n "
  15. /^set(CMake_VERSION_${1}/ {s/set(CMake_VERSION_${1} *\([0-9]*\))/\1/;p;}
  16. " "${cmake_source_dir}/Source/CMakeVersion.cmake"
  17. }
  18. version=''
  19. while test "$#" != 0; do
  20. case "$1" in
  21. --version) shift; version="$1" ;;
  22. --) shift ; break ;;
  23. -*) die "$usage" ;;
  24. *) break ;;
  25. esac
  26. shift
  27. done
  28. test "$#" = 0 || die "$usage"
  29. if test -z "$version"; then
  30. cmake_version_major="$(cmake_version_component MAJOR)"
  31. cmake_version_minor="$(cmake_version_component MINOR)"
  32. cmake_version_patch="$(cmake_version_component PATCH)"
  33. cmake_version_rc="$(cmake_version_component RC)"
  34. version="${cmake_version_major}.${cmake_version_minor}.${cmake_version_patch}"
  35. if test -n "$cmake_version_rc"; then
  36. version="$version-rc$cmake_version_rc"
  37. fi
  38. fi
  39. readonly version
  40. IFS='.-' read version_major version_minor version_patch version_suffix <<< "$version"
  41. readonly version_major
  42. readonly version_minor
  43. readonly version_patch
  44. readonly version_suffix
  45. if test -n "$version_suffix"; then
  46. maybe_version_suffix='"suffix": "'"$version_suffix"'",'
  47. else
  48. maybe_version_suffix=''
  49. fi
  50. readonly maybe_version_suffix
  51. readonly files_v1_in="${BASH_SOURCE%/*}/files-v1.json.in"
  52. sed "
  53. s/@version@/$version/g
  54. s/@version_major@/$version_major/g
  55. s/@version_minor@/$version_minor/g
  56. s/@version_patch@/$version_patch/g
  57. s/@maybe_version_suffix@/$maybe_version_suffix/g
  58. " "$files_v1_in" \
  59. | jq . \
  60. > "cmake-$version-files-v1.json"
  61. readonly algos='
  62. 256
  63. '
  64. for algo in $algos; do
  65. shasum -a $algo \
  66. "cmake-$version-files-v1.json" \
  67. $(jq -r '.files[].name' "cmake-$version-files-v1.json") \
  68. | LC_ALL=C sort -k 2 \
  69. > "cmake-$version-SHA-$algo.txt"
  70. done