LibreTube/changelog.sh

65 lines
1.4 KiB
Bash
Executable File

# check whether there's a file passed as argument
! [ -f "$1" ] && echo "File doesn't exist" && exit 1
# read the file
TEXT=$(<"$1")
# remove weblate and dependencies
TEXT=$(printf "${TEXT[@]}" | sed 's/.*Weblate.*//g' | sed 's/.*dependency.*//g')
# go through all the lines inside the file
readarray -t y <<< "${TEXT[@]}"
FIXES=()
FEATURES=()
IMPROVEMENTS=()
REPOCHANGES=()
for line in "${y[@]}" ; do
if [[ "$line" =~ [Ff]ix ]]; then
FIXES+=("$line")
elif [[ "$line" =~ [Oo]ption ]] || [[ "$line" =~ [Mm]inor ]]; then
IMPROVEMENTS+=("$line")
elif [[ "$line" =~ [Rr][Ee][Aa][Dd][Mm][Ee] ]] || [[ "$line" =~ [Ss]creenshots ]] || [[ "$line" =~ Clean( )?up ]]; then
REPOCHANGES+=("$line")
elif [[ "$line" =~ ^\*\*Full ]]; then
FULLCHANGELOG="$line"
elif ! [[ -z "$line" ]]; then
FEATURES+=("$line")
fi
done
# function for echoing all items of an array, one per line
echoall() {
for line in "$@"; do
echo "$line"
done
}
# Print all the found and categorized changes
create_changelog() {
echo "## New features"
echoall "${FEATURES[@]}"
echo ""
echo "## Minor changes"
echoall "${IMPROVEMENTS[@]}"
echo ""
echo "## Bug fixes"
echoall "${FIXES[@]}"
echo ""
echo "## Repo changes"
echoall "${REPOCHANGES[@]}"
echo ""
echo "$FULLCHANGELOG"
}
# generate a new changelog
CHANGELOG=$(create_changelog)
# write the changelog into the file
echo "$CHANGELOG" > "$1"
echo "Done."