1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
#!/usr/bin/env bash
# https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/release-a-version
set -euo pipefail
CPUX_DIR="$(git rev-parse --show-toplevel)"
TMP_CHANGELOG="$(mktemp --tmpdir cpu-x-XXXXXX)"
TMP_APPDATA="$(mktemp --tmpdir cpu-x-XXXXXX)"
DATE="$(date --iso-8601)"
GIT_CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
GIT_DEFAULT_BRANCH="$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')"
PREVIOUS_VERSION="$(git describe --tags --abbrev=0)"
NEW_VERSION="${1:-}"
if [[ -z "$NEW_VERSION" ]]; then
echo -n "Enter version: "
read -r NEW_VERSION
fi
# Prepare ChangeLog
begin_changelog=false
while IFS= read -r line; do
if ! $begin_changelog && [[ "$line" == "---" ]]; then
begin_changelog=true
cat >> "$TMP_CHANGELOG" <<EOF
---
## [v$NEW_VERSION] - $DATE
### Added
-
### Changed
-
### Deprecated
-
### Removed
-
### Fixed
-
### Security
-
---
EOF
else
echo "$line" >> "$TMP_CHANGELOG"
fi
done < "$CPUX_DIR/ChangeLog.md"
cp -f "$TMP_CHANGELOG" "$CPUX_DIR/ChangeLog.md"
# Update version in AppData
while IFS= read -r line; do
if [[ "$line" =~ "<releases>" ]]; then
cat >> "$TMP_APPDATA" <<EOF
<releases>
<release version="${NEW_VERSION}" date="${DATE}">
<url>https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/blob/${GIT_DEFAULT_BRANCH}/ChangeLog.md#v${NEW_VERSION//./}---${DATE}</url>
</release>
EOF
else
echo "$line" >> "$TMP_APPDATA"
fi
done < "$CPUX_DIR/data/io.github.thetumultuousunicornofdarkness.cpu-x.appdata.xml"
cp -f "$TMP_APPDATA" "$CPUX_DIR/data/io.github.thetumultuousunicornofdarkness.cpu-x.appdata.xml"
# Update version in CMakeLists.txt
sed -i "s|${PREVIOUS_VERSION/v/}|${NEW_VERSION}|" "$CPUX_DIR/CMakeLists.txt"
# Displaying changes since last tag
if [[ "$GIT_CURRENT_BRANCH" != "$GIT_DEFAULT_BRANCH" ]]; then
git switch "$GIT_DEFAULT_BRANCH"
fi
git log --graph --decorate --oneline --color --first-parent "$GIT_DEFAULT_BRANCH" "$PREVIOUS_VERSION" | grep -Ev "Regen POT file|Update translation files|Translated using Weblate|Added translation using Weblate" | less --RAW-CONTROL-CHARS || true
# Wait for confirmation
while true; do
read -r -p "Commit and push? " choice
case "$choice" in
y|Y|yes|YES) break;;
n|N|no|NO) exit;;
*) echo "Please answer yes or no.";;
esac
done
# Commit, tag and push
git commit "$CPUX_DIR/ChangeLog.md" "$CPUX_DIR/CMakeLists.txt" "$CPUX_DIR/data/io.github.thetumultuousunicornofdarkness.cpu-x.appdata.xml" -m "Release version $NEW_VERSION"
git tag "v$NEW_VERSION"
git push --atomic origin "$GIT_DEFAULT_BRANCH" "v$NEW_VERSION"
|