diff options
Diffstat (limited to 'Utilities/Release/files.bash')
-rwxr-xr-x | Utilities/Release/files.bash | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Utilities/Release/files.bash b/Utilities/Release/files.bash new file mode 100755 index 0000000..28ca8f1 --- /dev/null +++ b/Utilities/Release/files.bash @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +set -e + +usage='usage: files.bash [<options>] [--] + +Options: + + --version <ver> CMake <major>.<minor> version number to push. + Defaults to version of source tree. +' + +die() { + echo "$@" 1>&2; exit 1 +} + +readonly cmake_source_dir="${BASH_SOURCE%/*}/../.." + +cmake_version_component() +{ + sed -n " +/^set(CMake_VERSION_${1}/ {s/set(CMake_VERSION_${1} *\([0-9]*\))/\1/;p;} +" "${cmake_source_dir}/Source/CMakeVersion.cmake" +} + + +version='' +while test "$#" != 0; do + case "$1" in + --version) shift; version="$1" ;; + --) shift ; break ;; + -*) die "$usage" ;; + *) break ;; + esac + shift +done +test "$#" = 0 || die "$usage" + +if test -z "$version"; then + cmake_version_major="$(cmake_version_component MAJOR)" + cmake_version_minor="$(cmake_version_component MINOR)" + cmake_version_patch="$(cmake_version_component PATCH)" + cmake_version_rc="$(cmake_version_component RC)" + version="${cmake_version_major}.${cmake_version_minor}.${cmake_version_patch}" + if test -n "$cmake_version_rc"; then + version="$version-rc$cmake_version_rc" + fi +fi +readonly version + +IFS='.-' read version_major version_minor version_patch version_suffix <<< "$version" +readonly version_major +readonly version_minor +readonly version_patch +readonly version_suffix + +if test -n "$version_suffix"; then + maybe_version_suffix='"suffix": "'"$version_suffix"'",' +else + maybe_version_suffix='' +fi +readonly maybe_version_suffix + +readonly files_v1_in="${BASH_SOURCE%/*}/files-v1.json.in" +sed " + s/@version@/$version/g + s/@version_major@/$version_major/g + s/@version_minor@/$version_minor/g + s/@version_patch@/$version_patch/g + s/@maybe_version_suffix@/$maybe_version_suffix/g +" "$files_v1_in" \ + | jq . \ + > "cmake-$version-files-v1.json" + +readonly algos=' + 256 +' +for algo in $algos; do + shasum -a $algo \ + "cmake-$version-files-v1.json" \ + $(jq -r '.files[].name' "cmake-$version-files-v1.json") \ + | LC_ALL=C sort -k 2 \ + > "cmake-$version-SHA-$algo.txt" +done |