Merge branch 'release-4.0'
[kiteware-cmake.git] / Utilities / Release / files.bash
blob28ca8f1b06b2333ece745f67cb58d71e1ed25d31
1 #!/usr/bin/env bash
3 set -e
5 usage='usage: files.bash [<options>] [--]
7 Options:
9 --version <ver> CMake <major>.<minor> version number to push.
10 Defaults to version of source tree.
13 die() {
14 echo "$@" 1>&2; exit 1
17 readonly cmake_source_dir="${BASH_SOURCE%/*}/../.."
19 cmake_version_component()
21 sed -n "
22 /^set(CMake_VERSION_${1}/ {s/set(CMake_VERSION_${1} *\([0-9]*\))/\1/;p;}
23 " "${cmake_source_dir}/Source/CMakeVersion.cmake"
27 version=''
28 while test "$#" != 0; do
29 case "$1" in
30 --version) shift; version="$1" ;;
31 --) shift ; break ;;
32 -*) die "$usage" ;;
33 *) break ;;
34 esac
35 shift
36 done
37 test "$#" = 0 || die "$usage"
39 if test -z "$version"; then
40 cmake_version_major="$(cmake_version_component MAJOR)"
41 cmake_version_minor="$(cmake_version_component MINOR)"
42 cmake_version_patch="$(cmake_version_component PATCH)"
43 cmake_version_rc="$(cmake_version_component RC)"
44 version="${cmake_version_major}.${cmake_version_minor}.${cmake_version_patch}"
45 if test -n "$cmake_version_rc"; then
46 version="$version-rc$cmake_version_rc"
49 readonly version
51 IFS='.-' read version_major version_minor version_patch version_suffix <<< "$version"
52 readonly version_major
53 readonly version_minor
54 readonly version_patch
55 readonly version_suffix
57 if test -n "$version_suffix"; then
58 maybe_version_suffix='"suffix": "'"$version_suffix"'",'
59 else
60 maybe_version_suffix=''
62 readonly maybe_version_suffix
64 readonly files_v1_in="${BASH_SOURCE%/*}/files-v1.json.in"
65 sed "
66 s/@version@/$version/g
67 s/@version_major@/$version_major/g
68 s/@version_minor@/$version_minor/g
69 s/@version_patch@/$version_patch/g
70 s/@maybe_version_suffix@/$maybe_version_suffix/g
71 " "$files_v1_in" \
72 | jq . \
73 > "cmake-$version-files-v1.json"
75 readonly algos='
76 256
78 for algo in $algos; do
79 shasum -a $algo \
80 "cmake-$version-files-v1.json" \
81 $(jq -r '.files[].name' "cmake-$version-files-v1.json") \
82 | LC_ALL=C sort -k 2 \
83 > "cmake-$version-SHA-$algo.txt"
84 done