#!/bin/bash # Usage: # ./update-release runtime-version|latest-release|latest-commit [--bug bug-id] [--tarball tarball-name] [--release-json release-json] [--larger-rpm-release] set -euo pipefail IFS=$'\n\t' set -x print_usage() { echo " Usage:" echo " ./update-release runtime-version|latest-release|latest-commit [--bootstrap] [--bug bug-id] [--tarball tarball-name] [--release-json release-json] [--larger-rpm-release]" echo "" echo "The runtime-version parameter needs to match the github release name." echo "For preview releases, runtime-version should be of the form '9.0 Preview 1'." } download_release_json() { version=$1 cat > query < release.metadata.github curl -L "$(jq -r .release_manifest release.metadata.github)" -o release.json } user_provided_tarball_name="" rpm_release=1 positional_args=() bug_ids=() bootstrap=0 while [[ "$#" -gt 0 ]]; do arg="$1" case "${arg}" in --bootstrap) bootstrap=1 shift; ;; --bug) bug_ids+=("$2") shift; shift; ;; -h|--help) print_usage exit 0 ;; --release-json) release_json="$2" shift; shift; ;; --tarball) user_provided_tarball_name="$2" shift; shift; ;; --larger-rpm-release) rpm_release="2" shift; ;; *) positional_args+=("$1") shift ;; esac done spec_files=( ./*.spec ) spec_file="${spec_files[0]}" dotnet_major_minor_version=$spec_file dotnet_major_minor_version=${dotnet_major_minor_version#./dotnet} dotnet_major_minor_version=${dotnet_major_minor_version%.spec} echo "Updating .NET $dotnet_major_minor_version" runtime_version=${positional_args[0]:-} sdk_version="" tag=v${runtime_version} created_release_json=0 if [[ ${runtime_version} == latest-release ]]; then if [[ -n "${release_json:-}" ]]; then cp -a "${release_json}" release.json else download_release_json "${dotnet_major_minor_version}" fi elif [[ ${runtime_version} == latest-commit ]]; then cat > query < release.metadata.github commit=$(jq -r .commit.sha release.metadata.github) jq >release.json < git-commit-message rpmdev-bumpspec --comment="$comment" "$spec_file" # Reset release in 'Release' tag sed -i -E 's|^Release: [[:digit:]]+%|Release: '"$rpm_release"'%|' "$spec_file" # Reset Release in changelog comment # See https://stackoverflow.com/questions/18620153/find-matching-text-and-replace-next-line sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-'"$rpm_release"'/' "$spec_file" echo "Done updating sources. Commit message in ./git-commit-message"