aboutsummaryrefslogtreecommitdiff
path: root/bump_version
diff options
context:
space:
mode:
Diffstat (limited to 'bump_version')
-rw-r--r--bump_version129
1 files changed, 129 insertions, 0 deletions
diff --git a/bump_version b/bump_version
new file mode 100644
index 000000000..dd55e62c7
--- /dev/null
+++ b/bump_version
@@ -0,0 +1,129 @@
+#!/usr/bin/env bash
+
+# bump_version - increase the shared version and generate changelogs
+
+set -o errexit
+set -o pipefail
+set -o xtrace
+
+usage() {
+ echo -e "bump_version - increase the shared version and generate changelogs"
+ echo -e ""
+ echo -e "Usage:"
+ echo -e " $ bump_version <new_version>"
+}
+
+if [[ -z $1 ]]; then
+ usage
+ exit 1
+fi
+
+shared_version_file="./SharedVersion.cs"
+build_file="./build.yaml"
+# csproj files for nuget packages
+jellyfin_subprojects=(
+ MediaBrowser.Common/MediaBrowser.Common.csproj
+ Jellyfin.Data/Jellyfin.Data.csproj
+ MediaBrowser.Controller/MediaBrowser.Controller.csproj
+ MediaBrowser.Model/MediaBrowser.Model.csproj
+ Emby.Naming/Emby.Naming.csproj
+ src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
+)
+
+new_version="$1"
+
+# Parse the version from the AssemblyVersion
+old_version="$(
+ grep "AssemblyVersion" ${shared_version_file} \
+ | sed -E 's/\[assembly: ?AssemblyVersion\("([0-9\.]+)"\)\]/\1/'
+)"
+echo $old_version
+
+# Set the shared version to the specified new_version
+old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars
+new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )"
+sed -i "s/${old_version_sed}/${new_version_sed}/g" ${shared_version_file}
+
+old_version="$(
+ grep "version:" ${build_file} \
+ | sed -E 's/version: "([0-9\.]+[-a-z0-9]*)"/\1/'
+)"
+echo $old_version
+
+# Set the build.yaml version to the specified new_version
+old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars
+new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )"
+sed -i "s/${old_version_sed}/${new_version_sed}/g" ${build_file}
+
+# update nuget package version
+for subproject in ${jellyfin_subprojects[@]}; do
+ echo ${subproject}
+ # Parse the version from the *.csproj file
+ old_version="$(
+ grep "VersionPrefix" ${subproject} \
+ | awk '{$1=$1};1' \
+ | sed -E 's/<VersionPrefix>([0-9\.]+[-a-z0-9]*)<\/VersionPrefix>/\1/'
+ )"
+ echo old nuget version: $old_version
+ new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )"
+
+ # Set the nuget version to the specified new_version
+ sed -i "s|${old_version}|${new_version_sed}|g" ${subproject}
+done
+
+if [[ ${new_version} == *"-"* ]]; then
+ new_version_pkg="$( sed 's/-/~/g' <<<"${new_version}" )"
+ new_version_deb_sup=""
+else
+ new_version_pkg="${new_version}"
+ new_version_deb_sup="-1"
+fi
+
+# Update the metapackage equivs file
+debian_equivs_file="debian/metapackage/jellyfin"
+sed -i "s/${old_version_sed}/${new_version_pkg}/g" ${debian_equivs_file}
+
+# Write out a temporary Debian changelog with our new stuff appended and some templated formatting
+debian_changelog_file="debian/changelog"
+debian_changelog_temp="$( mktemp )"
+# Create new temp file with our changelog
+echo -e "jellyfin-server (${new_version_pkg}${new_version_deb_sup}) unstable; urgency=medium
+
+ * New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v${new_version}
+
+ -- Jellyfin Packaging Team <packaging@jellyfin.org> $( date --rfc-2822 )
+" >> ${debian_changelog_temp}
+cat ${debian_changelog_file} >> ${debian_changelog_temp}
+# Move into place
+mv ${debian_changelog_temp} ${debian_changelog_file}
+
+# Write out a temporary Dnf changelog with our new stuff prepended and some templated formatting
+fedora_spec_file="fedora/jellyfin.spec"
+fedora_changelog_temp="$( mktemp )"
+fedora_spec_temp_dir="$( mktemp -d )"
+fedora_spec_temp="${fedora_spec_temp_dir}/jellyfin.spec.tmp"
+# Make a copy of our spec file for hacking
+cp ${fedora_spec_file} ${fedora_spec_temp_dir}/
+pushd ${fedora_spec_temp_dir}
+# Split out the stuff before and after changelog
+csplit jellyfin.spec "/^%changelog/" # produces xx00 xx01
+# Update the version in xx00
+sed -i "s/${old_version_sed}/${new_version_pkg}/g" xx00
+# Remove the header from xx01
+sed -i '/^%changelog/d' xx01
+# Create new temp file with our changelog
+echo -e "%changelog
+* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team <packaging@jellyfin.org>
+- New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v${new_version}" >> ${fedora_changelog_temp}
+cat xx01 >> ${fedora_changelog_temp}
+# Reassembble
+cat xx00 ${fedora_changelog_temp} > ${fedora_spec_temp}
+popd
+# Move into place
+mv ${fedora_spec_temp} ${fedora_spec_file}
+# Clean up
+rm -rf ${fedora_spec_temp_dir}
+
+# Stage the changed files for commit
+git add .
+git status -v