| #!/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 |