| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env bash
- usage='usage: push.bash [<options>] [--] <dest>
- Options:
- --dir <dir> Specify subdirectory under destination.
- Defaults to "v<version>".
- --version <ver> CMake <major>.<minor> version number to push.
- Defaults to version of source tree.
- '
- die() {
- echo "$@" 1>&2; exit 1
- }
- 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=''
- dir=''
- while test "$#" != 0; do
- case "$1" in
- --dir) shift; dir="$1" ;;
- --version) shift; version="$1" ;;
- --) shift ; break ;;
- -*) die "$usage" ;;
- *) break ;;
- esac
- shift
- done
- test "$#" = 1 || die "$usage"
- readonly dest="$1"
- if test -z "$version"; then
- cmake_version_major="$(cmake_version_component MAJOR)"
- cmake_version_minor="$(cmake_version_component MINOR)"
- version="${cmake_version_major}.${cmake_version_minor}"
- fi
- readonly version
- if test -z "$dir"; then
- dir="v${version}"
- fi
- readonly dir
- if ! test -d "${dest}/${dir}"; then
- mkdir "${dest}/${dir}"
- fi
- for f in cmake-${version}*; do
- if ! test -f "${f}"; then
- continue
- fi
- echo "pushing '${f}'"
- # Make a copy with a new timestamp and atomically rename into place.
- tf="${dest}/${dir}/.tmp.${f}"
- df="${dest}/${dir}/${f}"
- cp "${f}" "${tf}"
- mv "${tf}" "${df}"
- # Pause to give each file a distinct time stamp even with 1s resolution
- # so that sorting by time also sorts alphabetically.
- sleep 1.1
- done
|