PKGBUILDs/devel/own-projects/release-on-github.sh

68 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
set -e # abort on first error
shopt -s nullglob
source "$(dirname $0)/../versions.sh"
if ! [[ $GITHUB_TOKEN ]]; then
echo "Don't forget to set \$GITHUB_TOKEN."
exit -2
fi
gh_user=Martchus
# release latest version of my projects on GitHub (if not already released yet)
for project in "${!versions[@]}"
do
version=${versions[$project]}
gh_name=${github_names[$project]:-$project}
[[ $gh_name == 'skip' ]] && continue
[[ $version == 'none' ]] && continue
echo '------------------------------------------------------------------------'
echo "NEXT: $project -> $version"
# check whether CMakeLists.txt has been updated
cmake_lists=$(wget -qO- "https://raw.githubusercontent.com/$gh_user/$gh_name/master/CMakeLists.txt")
major_version_regex='set\(META_VERSION_MAJOR ([^\)]*)\)'
minor_version_regex='set\(META_VERSION_MINOR ([^\)]*)\)'
patch_version_regex='set\(META_VERSION_PATCH ([^\)]*)\)'
cmake_version=
if ! [[ $cmake_lists =~ $major_version_regex ]]; then
echo "FAILURE: Unable to read major version from CMakeLists.txt:\n$cmake_lists"
continue
fi
cmake_version=${BASH_REMATCH[1]}
if ! [[ $cmake_lists =~ $minor_version_regex ]]; then
echo "FAILURE: Unable to read minor version from CMakeLists.txt:\n$cmake_lists"
continue
fi
cmake_version=$cmake_version.${BASH_REMATCH[1]}
if ! [[ $cmake_lists =~ $patch_version_regex ]]; then
echo "FAILURE: Unable to read patch version from CMakeLists.txt:\n$cmake_lists"
continue
fi
cmake_version=$cmake_version.${BASH_REMATCH[1]}
if [[ $version != $cmake_version ]]; then
echo "FAILURE: Unable to release $project -> v$version; CMake version is v$cmake_version"
continue
fi
# check whether release already exists
if github-release info --user "$gh_user" --repo "$gh_name" --tag "v$version"; then
echo "auto-skipping $project -> v$version; release already present"
continue
fi
# promt
read -p "release $project -> v$version [y/n]? " -n 1 -r
echo
[[ $REPLY =~ ^[Yy]$ ]] || continue
# create release
if github-release release --user "$gh_user" --repo "$gh_name" --tag "v$version"; then
echo "SUCCESS: released $project -> $version"
else
echo "FAILURE: unable to create release $project -> $version"
exit -1
fi
done