manga-dlp/release.sh

122 lines
3.2 KiB
Bash
Raw Permalink Normal View History

2022-05-10 17:59:02 +02:00
#!/bin/bash
2022-05-11 20:24:15 +02:00
# shellcheck disable=SC2016
2022-05-10 17:59:02 +02:00
2022-05-11 16:44:03 +02:00
# script to set the version numbers on all files or generate changelogs for a release
2022-05-10 17:59:02 +02:00
2022-05-11 16:44:03 +02:00
function pre_checks() {
2022-05-11 20:24:15 +02:00
# prechecks
if [[ -z "${2}" ]]; then
printf 'No version was provided\n'
printf 'Error\n'
exit 1
fi
# set mdlp version
mdlp_version="${2}"
2022-05-11 16:44:03 +02:00
}
2022-05-11 15:10:56 +02:00
2022-05-11 20:24:15 +02:00
function show_help() {
printf 'Script to change the version numbers of mangadlp in the build files, or generate release-notes for a release\n'
printf '\nUsage:\n'
printf ' ./release.sh <option> <mdlp-version>\n'
printf '\nOptions:\n'
printf ' --set-version - Set version number on all build files\n'
printf ' --get-changelog - Create RELEASENOTES.md for github/gitea release\n'
printf '\nExample:\n'
printf ' ./release.sh --get-releasenotes "2.0.5"\n'
exit 1
2022-05-10 17:59:02 +02:00
}
function set_ver_docker() {
2022-05-11 20:24:15 +02:00
printf 'Changing version in docker-files\n'
local docker_files docker_regex
docker_files=(
'docker/Dockerfile.amd64'
'docker/Dockerfile.arm64'
)
2022-05-16 16:09:17 +02:00
docker_regex='s,^ENV MDLP_VERSION=.*$,ENV MDLP_VERSION='"${mdlp_version}"',g'
2022-05-11 20:24:15 +02:00
for file in "${docker_files[@]}"; do
if ! sed -i "${docker_regex}" "${file}"; then return 1; fi
done
printf 'Done\n'
2022-05-10 17:59:02 +02:00
}
function set_ver_pypi() {
2022-05-11 20:24:15 +02:00
printf 'Changing version in pypi-files\n'
local pypi_files pypi_regex
pypi_files=(
'setup.py'
)
pypi_regex='s/version=.*$/version=\"'"${mdlp_version}"'\",/g'
for file in "${pypi_files[@]}"; do
if ! sed -i "${pypi_regex}" "${file}"; then return 1; fi
done
printf 'Done\n'
2022-05-10 17:59:02 +02:00
}
2022-05-13 22:34:25 +02:00
function set_ver_project() {
printf 'Changing version in project-files\n'
local project_files project_regex
project_files=(
'mangadlp/input.py'
2022-05-16 16:09:17 +02:00
'manga-dlp.py'
2022-05-13 22:34:25 +02:00
)
2022-05-13 22:36:11 +02:00
project_regex='s/mangadlp_version =.*$/mangadlp_version = \"'"${mdlp_version}"'\"/g'
2022-05-13 22:34:25 +02:00
for file in "${project_files[@]}"; do
if ! sed -i "${project_regex}" "${file}"; then return 1; fi
done
printf 'Done\n'
}
2022-05-11 15:00:22 +02:00
# set version number in files
2022-05-11 16:44:03 +02:00
function set_version() {
2022-05-11 20:24:15 +02:00
# check for version
if [[ -z "${mdlp_version}" ]]; then
printf 'You need to specify a version with $1\n'
exit 1
fi
# set docker versions
if ! set_ver_docker; then
2022-05-13 22:34:25 +02:00
printf 'Docker: Error\n'
2022-05-11 20:24:15 +02:00
fi
# set pypi versions
if ! set_ver_pypi; then
2022-05-13 22:34:25 +02:00
printf 'PyPi: Error\n'
fi
# set project versions
if ! set_ver_project; then
printf 'Project: Error\n'
2022-05-11 20:24:15 +02:00
fi
2022-05-10 17:59:02 +02:00
}
2022-05-11 15:00:22 +02:00
# create changelog for release
2022-05-11 16:44:03 +02:00
function get_releasenotes() {
2022-05-11 20:24:15 +02:00
printf 'Creating release-notes\n'
# check for version
if [[ -z "${mdlp_version}" ]]; then
printf 'You need to specify a version with $1\n'
exit 1
fi
awk -v ver="[${mdlp_version}]" \
2022-05-13 12:13:52 +02:00
'/^## / { if (p) { exit }; if ($2 == ver) { p=1 } } p && NF' \
'CHANGELOG.md' > 'RELEASENOTES.md'
2022-05-11 20:24:15 +02:00
printf 'Done\n'
2022-05-11 15:00:22 +02:00
}
2022-05-10 17:59:02 +02:00
# check options
case "${1}" in
'--help' | '-h' | 'help')
show_help
;;
'--set-version')
pre_checks "${@}"
set_version
;;
'--get-releasenotes')
pre_checks "${@}"
get_releasenotes
;;
*)
show_help
;;
2022-05-10 17:59:02 +02:00
esac