74 lines
2.2 KiB
Bash
Executable File
74 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e # abort on first error
|
|
shopt -s nullglob
|
|
source "$(dirname $0)/../versions.sh"
|
|
|
|
gh_user=Martchus
|
|
new_release_date=$(date --iso-8601)
|
|
old_release_date_regex='set\(META_RELEASE_DATE "([^\)]*)"\)'
|
|
|
|
# read project dirs; split colon separated path
|
|
OIFS=$IFS
|
|
IFS=':'
|
|
for dir in $DEFAULT_PROJECTS_DIR; do
|
|
projectsdirs+=("$dir")
|
|
done
|
|
IFS=$OIFS
|
|
|
|
# check whether the project will be released and set the current day as release date then
|
|
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 release already exists
|
|
if github-release info --user "$gh_user" --repo "$gh_name" --tag "v$version"; then
|
|
echo "skipping $project -> v$version; release already present"
|
|
continue
|
|
fi
|
|
|
|
# locate project
|
|
project_dir=
|
|
for dir in "${projectsdirs[@]}"; do
|
|
[[ -d $dir/$project ]] && project_dir=$dir/$project && break
|
|
done
|
|
if [[ ! $project_dir ]]; then
|
|
echo "FAILURE: Unable to locate checkout of $project"
|
|
continue
|
|
fi
|
|
echo "entering '$project_dir'"
|
|
cd "$project_dir"
|
|
|
|
# check current release date
|
|
cmake_lists=$(cat CMakeLists.txt)
|
|
if ! [[ $cmake_lists =~ $old_release_date_regex ]]; then
|
|
echo "FAILURE: Unable to read current release date from CMakeLists.txt:\n$cmake_lists"
|
|
continue
|
|
fi
|
|
old_release_date=${BASH_REMATCH[1]}
|
|
if [[ $old_release_date == "$new_release_date" ]]; then
|
|
echo "skipping $project -> release date $old_release_date does not change"
|
|
continue
|
|
fi
|
|
|
|
if ! [ -z "$(git status --porcelain)" ]; then
|
|
echo "FAILURE: Git checkout '$PWD' is not clean"
|
|
continue
|
|
fi
|
|
|
|
# promt
|
|
read -p "update release date of $project -> v$version [y/n]? " -n 1 -r
|
|
echo
|
|
[[ $REPLY =~ ^[Yy]$ ]] || continue
|
|
|
|
# update release date
|
|
sed -i -e "s|set(META_RELEASE_DATE.*|set(META_RELEASE_DATE \"$new_release_date\")|" CMakeLists.txt
|
|
git add CMakeLists.txt
|
|
git commit -m 'Update release date'
|
|
git push
|
|
done
|