summaryrefslogtreecommitdiff
path: root/Utilities/Release/files.bash
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/Release/files.bash')
-rwxr-xr-xUtilities/Release/files.bash84
1 files changed, 84 insertions, 0 deletions
diff --git a/Utilities/Release/files.bash b/Utilities/Release/files.bash
new file mode 100755
index 0000000000..28ca8f1b06
--- /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